source: general/prog/rust.xml@ b6bf6e7

12.2 lazarus trunk xry111/for-12.3 xry111/spidermonkey128
Last change on this file since b6bf6e7 was b6bf6e7, checked in by Bruce Dubbs <bdubbs@…>, 7 weeks ago

Fix rustc stats

  • Property mode set to 100644
File size: 29.3 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY rust-download-http "https://static.rust-lang.org/dist/rustc-&rust-version;-src.tar.xz">
8 <!ENTITY rust-download-ftp " ">
9 <!ENTITY rust-md5sum "cf4c803b7d25d74ad1604848a179f35c">
10 <!ENTITY rust-size "190 MB">
11 <!ENTITY rust-buildsize "8.9 GB (298 MB installed); add 6.4 GB if running the tests">
12 <!ENTITY rust-time "6.7 SBU (including download time; add 6.2 SBU for tests, both using parallelism=8)">
13]>
14
15<sect1 id="rust" xreflabel="rustc-&rust-version;">
16 <?dbhtml filename="rust.html"?>
17
18
19 <title>Rustc-&rust-version;</title>
20
21 <indexterm zone="rust">
22 <primary sortas="a-rust">Rust</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to Rust</title>
27 <para>
28 The <application>Rust</application> programming language is designed
29 to be a safe, concurrent, practical language.
30 </para>
31
32 <para>
33 This package is updated on a six-weekly release cycle. Because it is
34 such a large and slow package to build, is at the moment only required
35 by a few packages in this book, and particularly because newer versions
36 tend to break older mozilla packages, the BLFS editors take the view that
37 it should only be updated when that is necessary (either to fix problems,
38 or to allow a new version of a package to build).
39 </para>
40
41 <para>
42 As with many other programming languages, rustc (the rust compiler)
43 needs a binary from which to bootstrap. It will download a stage0
44 binary at the start of the build, so you cannot compile it without an
45 Internet connection.
46 </para>
47
48 <note>
49 <para>
50 Although BLFS usually installs in <filename
51 class="directory">/usr</filename>, when you later upgrade to a newer
52 version of <application>rust</application> the old libraries in <filename
53 class="directory">/usr/lib/rustlib</filename> will remain, with various
54 hashes in their names, but will not be usable and will waste space. The
55 editors recommend placing the files in the <filename
56 class="directory">/opt</filename> directory. In particular, if you
57 have reason to rebuild with a modified configuration (e.g. using the
58 shipped LLVM after building with shared LLVM, perhaps to compile crates
59 for architectures which the BLFS LLVM build does not support)
60 it is possible for the install to leave a broken
61 <command>cargo</command> program. In such a situation, either remove
62 the existing installation first, or use a different prefix such as
63 /opt/rustc-&rust-version;-build2.
64 </para>
65
66 <para>
67 If you prefer, you can of course change the prefix to <filename
68 class="directory">/usr</filename>.
69 </para>
70 </note>
71
72 <para>
73 The current <application>rustbuild</application> build-system will use
74 all processors, although it does not scale well and often falls
75 back to just using one core while waiting for a library to compile.
76 However it can be mostly limited to a specified number of processors by
77 a combination of adding the switch <literal>--jobs &lt;N&gt;</literal>
78 (e.g. '--jobs 4' to limit to 4 processors) on each invocation of
79 <command>python3 x.py</command> <emphasis>and</emphasis> using an
80 environment variable <envar>CARGO_BUILD_JOBS=&lt;N&gt;</envar>. At the
81 moment this is not effective when some of the rustc tests are run.
82 </para>
83
84 <para>
85 The current version of rust's num_cpus crate now recognizes that cgroups
86 can be used to restrict which processors it is allowed to use. So if your
87 machine lacks DRAM (typically, less than 2 GB DRAM per core) that might be
88 an alternative to taking CPUs offline.
89 Read <xref linkend='build-in-cgroup'/> for how to use a cgroup.
90 </para>
91
92 <para>
93 At the moment <application>Rust</application> does not provide any
94 guarantees of a stable ABI.
95 </para>
96
97 <note>
98 <para>
99 Rustc defaults to building for ALL supported architectures, using a
100 shipped copy of LLVM. In BLFS the build is only for the X86
101 architecture.
102 If you intend to develop rust crates, this build may not be good
103 enough for your purposes.
104 </para>
105 <para>
106 The build times of this version when repeated on the same machine are
107 often reasonably consistent, but as with all compilations using
108 <command>rustc</command> there can be some very slow outliers.
109 </para>
110 </note>
111
112 &lfs121_checked;
113
114 <bridgehead renderas="sect3">Package Information</bridgehead>
115 <itemizedlist spacing="compact">
116 <listitem>
117 <para>
118 Download (HTTP): <ulink url="&rust-download-http;"/>
119 </para>
120 </listitem>
121 <listitem>
122 <para>
123 Download (FTP): <ulink url="&rust-download-ftp;"/>
124 </para>
125 </listitem>
126 <listitem>
127 <para>
128 Download MD5 sum: &rust-md5sum;
129 </para>
130 </listitem>
131 <listitem>
132 <para>
133 Download size: &rust-size;
134 </para>
135 </listitem>
136 <listitem>
137 <para>
138 Estimated disk space required: &rust-buildsize;
139 </para>
140 </listitem>
141 <listitem>
142 <para>
143 Estimated build time: &rust-time;
144 </para>
145 </listitem>
146 </itemizedlist>
147 <!-- only keep this here for reuse in case we need a patch
148 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
149 <itemizedlist spacing="compact">
150 <listitem>
151 <para>
152 Optional patch (recommended if running the test suite):
153 <ulink url="&patch-root;/rustc-&rust-version;-testsuite_fix-1.patch"/>
154 </para>
155 </listitem>
156 </itemizedlist>
157 -->
158 <bridgehead renderas="sect3">Rust Dependencies</bridgehead>
159
160 <bridgehead renderas="sect4">Required</bridgehead>
161 <para role="required">
162 <xref linkend="cmake"/> and
163 <!-- Required for downloading stage 0 binaries.
164 Otherwise it's recommended (if not installed, a vendored copy
165 will be built). -->
166 <xref linkend="curl"/>
167 </para>
168
169 &build-use-internet;
170
171 <bridgehead renderas="sect4">Recommended</bridgehead>
172 <para role="recommended">
173 <xref linkend="libssh2"/>,
174 <xref linkend="llvm"/>
175 (built with -D LLVM_LINK_LLVM_DYLIB=ON so that rust can link to
176 system LLVM instead of building its shipped version), and
177 <xref linkend="sqlite"/>
178 </para>
179
180 <note>
181 <para>
182 If a recommended dependency is not installed, a shipped copy in the
183 Rustc source tarball will be built and used.
184 </para>
185 </note>
186
187 <bridgehead renderas="sect4">Optional</bridgehead>
188 <para role="optional">
189 <xref linkend="gdb"/> (used by the test suite if it is present),
190 <xref linkend="git"/> (required by the test suite),
191 <ulink url="https://github.com/bytecodealliance/wasmtime/tree/main/cranelift">cranelift</ulink>,
192 <ulink url="https://jemalloc.net/">jemalloc</ulink>,
193 libgccjit (read command explanation in
194 <xref role="nodep" linkend="gcc"/>), and
195 <ulink url='https://libgit2.org/'>libgit2</ulink>
196 </para>
197
198 <para condition="html" role="usernotes">
199 Editor Notes: <ulink url="&blfs-wiki;/rust"/>
200 </para>
201 </sect2>
202
203 <sect2 role="installation">
204 <title>Installation of Rust</title>
205
206 <para>
207 To install into the
208 <filename class="directory">/opt</filename> directory, remove any
209 existing <filename>/opt/rustc</filename> symlink
210 and create a new directory (i.e. with a different name if trying a
211 modified build of the same version).
212 As the <systemitem class="username">root</systemitem>
213 user:
214 </para>
215
216<screen role="root"><userinput>mkdir -pv /opt/rustc-&rust-version; &amp;&amp;
217ln -svfn rustc-&rust-version; /opt/rustc</userinput></screen>
218
219 <note>
220 <para>
221 If multiple versions of <application>Rust</application> are installed
222 in <filename class="directory">/opt</filename>, changing to another
223 version only requires changing the <filename> /opt/rustc</filename>
224 symbolic link and then running <command>ldconfig</command>.
225 </para>
226 </note>
227
228 <para>
229 Create a suitable <filename>config.toml</filename> file which will
230 configure the build.
231 </para>
232
233<screen><userinput>cat &lt;&lt; EOF &gt; config.toml
234<literal># see config.toml.example for more possible options
235# See the 8.4 book for an old example using shipped LLVM
236# e.g. if not installing clang, or using a version before 13.0
237
238# Tell x.py the editors have reviewed the content of this file
239# and updated it to follow the major changes of the building system,
240# so x.py will not warn us to do such a review.
241change-id = 125535
242
243[llvm]
244# by default, rust will build for a myriad of architectures
245targets = "X86"
246
247# When using system llvm prefer shared libraries
248link-shared = true
249
250[build]
251# omit docs to save time and space (default is to build them)
252docs = false
253
254# install extended tools: cargo, clippy, etc
255extended = true
256
257# Do not query new versions of dependencies online.
258locked-deps = true
259
260# Specify which extended tools (those from the default install).
261tools = ["cargo", "clippy", "rustdoc", "rustfmt"]
262
263# Use the source code shipped in the tarball for the dependencies.
264# The combination of this and the "locked-deps" entry avoids downloading
265# many crates from Internet, and makes the Rustc build more stable.
266vendor = true
267
268[install]
269prefix = "/opt/rustc-&rust-version;"
270docdir = "share/doc/rustc-&rust-version;"
271
272[rust]
273channel = "stable"
274description = "for BLFS &version;"
275
276# Enable the same optimizations as the official upstream build.
277lto = "thin"
278codegen-units = 1
279
280[target.x86_64-unknown-linux-gnu]
281# NB the output of llvm-config (i.e. help options) may be
282# dumped to the screen when config.toml is parsed.
283llvm-config = "/usr/bin/llvm-config"
284
285[target.i686-unknown-linux-gnu]
286# NB the output of llvm-config (i.e. help options) may be
287# dumped to the screen when config.toml is parsed.
288llvm-config = "/usr/bin/llvm-config"</literal>
289EOF</userinput></screen>
290
291 <note>
292 <para>
293 The <command>python3 x.py</command> commands may output a warning
294 message complaining <computeroutput>no codegen-backends
295 config matched the requested path to build a codegen
296 backend</computeroutput>. And the provided
297 <quote>suggestion</quote> (<computeroutput>add backend to
298 codegen-backends in config.toml</computeroutput>) will not silence
299 it. This warning is <ulink
300 url='https://github.com/rust-lang/rust/issues/110692'>bogus</ulink>
301 and it should be ignored.
302 </para>
303 </note>
304
305 <para>
306 Compile <application>Rust</application> by running the following
307 commands:
308 </para>
309
310<!-- fixed in 1.58.0, retain as a reminder that fixed crates can be used
311<screen><userinput>sed -i -e '/^curl /s/0.4.38/0.4.40/' \
312 -e '/^curl-sys /s/0.4.48/0.4.50/' \
313 src/tools/cargo/Cargo.toml &amp;&amp; -->
314
315<screen><userinput>{ [ ! -e /usr/include/libssh2.h ] ||
316 export LIBSSH2_SYS_USE_PKG_CONFIG=1; } &amp;&amp;
317{ [ ! -e /usr/include/sqlite3.h ] ||
318 export LIBSQLITE3_SYS_USE_PKG_CONFIG=1; } &amp;&amp;
319python3 x.py build</userinput></screen>
320
321 <note>
322 <para>
323 The test suite will generate some messages in the
324 <phrase revision="sysv">system log</phrase>
325 <phrase revision="systemd">systemd journal</phrase>
326 for traps on invalid opcodes, and for segmentation faults.
327 In themselves these are nothing to worry about, just a way for the
328 test to be terminated.
329 </para>
330 </note>
331
332 <para>
333 To run the tests (again using all available CPUs) issue:
334 </para>
335
336<screen remap="test"><userinput>SSL_CERT_DIR=/etc/ssl/certs \
337python3 x.py test --verbose --no-fail-fast --keep-stage-std=1 | \
338 tee rustc-testlog</userinput></screen>
339
340 <!-- Both "unused import: `std::io::BufRead`"
341 Test suite internal issues and the unused imports are removed in
342 https://github.com/rust-lang/rust/pull/126097. -->
343 <para>
344 Two tests named <filename>tests/run-make/print-cfg</filename> and
345 <filename>tests/run-make/print-to-output</filename> are known to fail.
346 </para>
347
348<!-- Let's just comment this out. Nobody has tested on a system w/o
349 FileCheck for a long time.
350 <para>
351 If <command>FileCheck</command> from <application>LLVM</application> has
352 not been installed, all 47 tests from the <quote>assembly</quote> suite
353 will fail.
354 </para>
355-->
356 <para>
357 As with all large test suites, some tests might fail on some machines -
358 if the number of additional failures is low,
359 check the log for 'failures:' and review lines above that, particularly the
360 'stderr:' lines. Any mention of
361 SIGSEGV or signal 11 in a failing test is a cause for concern.
362 </para>
363
364 <para>
365 If you get any <emphasis>other</emphasis> failing test which reports an
366 issue number then you should search for that issue. For example, when
367 rustc &gt;= 1.41.1 was built with a version of sysllvm before 10.0 the test
368 for issue 69225 failed <ulink
369 url="https://github.com/rust-lang/rust/issues/69225"/> and that should be
370 regarded as a critical failure (they released 1.41.1 because of it).
371 Most other failures will not be critical.
372 </para>
373
374 <para>
375 Therefore, you should determine the number of failures.
376 The number of tests which passed and failed can be found by running:
377 </para>
378
379<!-- split into two lines for narrower screen windows -->
380<screen remap="test"><userinput>grep '^test result:' rustc-testlog |
381 awk '{sum1 += $4; sum2 += $6} END { print sum1 " passed; " sum2 " failed" }'</userinput></screen>
382
383 <para>
384 The other available fields are $8 for those which were ignored
385 (i.e. skipped), $10 for 'measured' and $12 for 'filtered out' but both
386 those last two are probably zero.
387 </para>
388
389 <para>
390 Now, as the &root; user, install the package:
391 </para>
392
393 <note>
394 <para>
395 If <command>sudo</command> or <command>su</command> is invoked for
396 switching to the &root; user, ensure
397 <envar>LIBSSH2_SYS_USE_PKG_CONFIG</envar> and
398 <envar>LIBSQLITE3_SYS_USE_PKG_CONFIG</envar> are correctly passed or
399 the following command may rebuild <command>cargo</command> with
400 shipped copies of libssh2 and sqlite. For <command>sudo</command>,
401 use the
402 <option>--preserve-env=LIB{SSH2,SQLITE3}_SYS_USE_PKG_CONFIG</option>
403 option. For <command>su</command>, do <emphasis>not</emphasis> use
404 the <option>-</option> or <option>--login</option> options.
405 </para>
406 </note>
407
408<screen role='root'><userinput>python3 x.py install rustc std &amp;&amp;
409install -vm755 \
410 build/host/stage1-tools/*/*/{cargo{,-clippy,-fmt},clippy-driver,rustfmt} \
411 /opt/rustc-&rust-version;/bin &amp;&amp;</userinput>
412install -vDm644 \
413 src/tools/cargo/src/etc/_cargo \
414 /opt/rustc-&rust-version;/share/zsh/site-functions/_cargo &amp;&amp;
415install -vm644 src/tools/cargo/src/etc/man/* \
416 /opt/rustc-1.80.0/share/man/man1</screen>
417
418 <para>
419 Still as the &root; user, fix the installation of documentations
420 and symlink a <application>Zsh</application>
421 completion file into the correct location:
422 </para>
423
424 <screen role='root'><userinput>rm -fv /opt/rustc-&rust-version;/share/doc/rustc-&rust-version;/*.old &amp;&amp;
425install -vm644 README.md \
426 /opt/rustc-&rust-version;/share/doc/rustc-&rust-version; &amp;&amp;
427
428install -vdm755 /usr/share/zsh/site-functions &amp;&amp;
429ln -sfv /opt/rustc/share/zsh/site-functions/_cargo \
430 /usr/share/zsh/site-functions</userinput></screen>
431
432 <para>
433 Finally, unset the exported environment variables:
434 </para>
435
436<screen><userinput>unset LIB{SSH2,SQLITE3}_SYS_USE_PKG_CONFIG</userinput></screen>
437
438 </sect2>
439
440 <sect2 role="commands">
441 <title>Command Explanations</title>
442
443 <para>
444 <command>ln -svfn rustc-&rust-version; /opt/rustc</command>: if this is
445 not the first use of the <filename class="directory">/opt/rustc</filename>
446 symlink, overwrite it by forcing, and use the '-n' flag to avoid getting
447 confusing results from e.g. <command>ls -l</command>.
448 </para>
449
450 <para>
451 <literal>targets = "X86"</literal>: this avoids building all the available
452 linux cross-compilers (AArch64, MIPS, PowerPC, SystemZ, etc). Unfortunately,
453 rust insists on installing source files for these below
454 <filename class="directory">/opt/rustc/lib/src</filename>.
455 </para>
456
457 <para>
458 <literal>extended = true</literal>: this installs several tools
459 (specified by the <literal>tools</literal> entry) alongside
460 <command>rustc</command>.
461 </para>
462
463 <para>
464 <literal>tools = ["cargo", "clippy", "rustdoc", "rustfmt"]</literal>:
465 only build the tools from the 'default' profile in binary command
466 <command>rustup</command> which are recommended for most users.
467 The other tools are unlikely to be useful unless using (old) code
468 analyzers or editing the standard library.
469 </para>
470
471 <para>
472 <literal>channel = "stable"</literal>: this ensures only stable features
473 can be used, the default in <filename>config.toml</filename> is to use
474 development features, which is not appropriate for a released version.
475 </para>
476
477 <!-- comment while using shipped LLVM -->
478 <para>
479 <literal>[target.x86_64-unknown-linux-gnu]</literal>: the syntax of
480 <filename>config.toml</filename> requires an <literal>llvm-config</literal>
481 entry for each target for which system-llvm is to be used. Change the target
482 to <literal>[target.i686-unknown-linux-gnu]</literal> if you are building
483 on 32-bit x86. This whole section may be omitted if you wish to build
484 against the shipped llvm, or do not have clang, but the resulting build will
485 be larger and take longer.
486 </para>
487
488<!--<para>
489 <command>sed -i -e '/^curl /s/0.4.38/0.4.40/' ... </command>: two crates
490 normally downloaded for this release do not correctly initialise
491 <application>curl</application> if using
492 <application>openssl-3.0.0</application>. Upstream has fixed that for a
493 future release, this sed causes the fixed versions to be used.
494 </para>-->
495
496 <!-- https://github.com/alexcrichton/ssh2-rs/issues/173 -->
497 <para>
498 <command>export LIBSSH2_SYS_USE_PKG_CONFIG=1</command>: Allow
499 <command>cargo</command> to link to system libssh2.
500 </para>
501
502 <!-- src/tools/cargo/Cargo.toml is specifying "bundled" as the
503 upstream is suggesting to avoid issues building for Windoge.
504 We don't care about Windoge so override this if we have
505 system sqlite3. -->
506 <para>
507 <command>export LIBSQLITE3_SYS_USE_PKG_CONFIG=1</command>: Allow
508 <command>cargo</command> to link to system sqlite.
509 </para>
510
511<!--<para>
512 <command>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"</command>:
513 This adds a link to libffi to any RUSTFLAGS you may already be passing
514 to the build. On some systems, linking fails to include libffi unless
515 this is used. The reason why this is needed is not clear.
516 2023-01-14 : assumed to be no longer needed, but it is some years
517 since one person reported needing this, keep it commented for the moment.
518 </para>-->
519
520 <!-- https://github.com/alexcrichton/openssl-probe/issues/25 -->
521 <para>
522 <envar>SSL_CERT_DIR=/etc/ssl/certs</envar>: Work around an issue
523 causing test failures with the CA certificate store layout used by
524 <xref linkend='make-ca'/>.
525 </para>
526
527 <para>
528 <parameter>--verbose</parameter>: this switch can sometimes provide more
529 information about a test which fails.
530 </para>
531
532 <para>
533 <parameter>--no-fail-fast</parameter>: this switch ensures that the test suite
534 will not stop at the first error.
535 </para>
536
537 <para>
538 <parameter>--keep-stage-std 1</parameter>: this switch prevents
539 <command>x.py test</command> from rebuilding the entire package for
540 some unknown reason.
541 </para>
542
543 <!-- https://github.com/rust-lang/rust/issues/94147
544 Do a manual installation for these 5 binaries for 1.80.0, the
545 build system insists to rebuild them even with this.
546 <para>
547 <parameter>- -stage=1</parameter>: this switch works around an issue
548 causing some Rustc components unnecessarily rebuilt running
549 <command>python3 x.py install</command>.
550 </para>-->
551
552 <para>
553 <command>install ... /opt/rustc-&rust-version;/...</command>:
554 these commands explicitly installs some Rust components. They are
555 used instead of relying on <command>x.py install</command> because the
556 latter would rebuild these components for some unknown reason.
557 </para>
558
559 </sect2>
560
561 <sect2 role="configuration">
562 <title>Configuring Rust</title>
563
564 <sect3 id="rustc-config">
565 <title>Configuration Information</title>
566
567 <para>
568 If you installed <application>rustc</application> in
569 <filename class="directory">/opt</filename>, you need to update the
570 following configuration files so that <application>rustc</application>
571 is correctly found by other packages and system processes.
572 </para>
573
574 <para>
575 As the <systemitem class="username">root</systemitem> user, create
576 the <filename>/etc/profile.d/rustc.sh</filename> file:
577 </para>
578
579<screen role="root"><userinput>cat &gt; /etc/profile.d/rustc.sh &lt;&lt; "EOF"
580<literal># Begin /etc/profile.d/rustc.sh
581
582pathprepend /opt/rustc/bin PATH
583
584# End /etc/profile.d/rustc.sh</literal>
585EOF</userinput></screen>
586
587 <para>
588 Immediately after installation, update the current PATH
589 for your current shell as a normal user:
590 </para>
591
592<screen><userinput>source /etc/profile.d/rustc.sh</userinput></screen>
593
594 </sect3>
595 </sect2>
596
597
598 <sect2 role="content">
599 <title>Contents</title>
600
601 <segmentedlist>
602 <segtitle>Installed Programs</segtitle>
603 <segtitle>Installed Libraries</segtitle>
604 <segtitle>Installed Directories</segtitle>
605
606 <seglistitem>
607 <seg>
608 cargo-clippy, cargo-fmt, cargo, clippy-driver, rust-gdb,
609 rust-gdbgui, rust-lldb, rustc, rustdoc, and rustfmt
610 </seg>
611 <seg>
612 librustc-driver-&lt;16-byte-hash&gt;.so,
613 libstd-&lt;16-byte-hash&gt;.so, and
614 libtest-&lt;16-byte-hash&gt;.so
615 </seg>
616 <seg>
617 ~/.cargo,
618 /opt/rustc, symbolic link to
619 /opt/rustc-&rust-version;
620 </seg>
621 </seglistitem>
622 </segmentedlist>
623
624 <variablelist>
625 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
626 <?dbfo list-presentation="list"?>
627 <?dbhtml list-presentation="table"?>
628
629 <varlistentry id="cargo-clippy">
630 <term><command>cargo-clippy</command></term>
631 <listitem>
632 <para>
633 provides lint checks for a cargo package
634 </para>
635 <indexterm zone="rust cargo-clippy">
636 <primary sortas="b-cargo-clippy">cargo-clippy</primary>
637 </indexterm>
638 </listitem>
639 </varlistentry>
640
641 <varlistentry id="cargo-fmt">
642 <term><command>cargo-fmt</command></term>
643 <listitem>
644 <para>
645 formats all bin and lib files of the current crate using
646 rustfmt
647 </para>
648 <indexterm zone="rust cargo-fmt">
649 <primary sortas="b-cargo-fmt">cargo-fmt</primary>
650 </indexterm>
651 </listitem>
652 </varlistentry>
653
654<!-- <varlistentry id="cargo-miri">
655 <term><command>cargo-miri</command></term>
656 <listitem>
657 <para>
658 is for use by Miri to interpret bin crates and tests. It is
659 not installed by default.
660 </para>
661 <indexterm zone="rust cargo-miri">
662 <primary sortas="b-cargo-miri">cargo-miri</primary>
663 </indexterm>
664 </listitem>
665 </varlistentry>-->
666
667 <varlistentry id="cargo">
668 <term><command>cargo</command></term>
669 <listitem>
670 <para>
671 is the Package Manager for Rust
672 </para>
673 <indexterm zone="rust cargo">
674 <primary sortas="b-cargo">cargo</primary>
675 </indexterm>
676 </listitem>
677 </varlistentry>
678
679 <varlistentry id="clippy-driver">
680 <term><command>clippy-driver</command></term>
681 <listitem>
682 <para>
683 provides lint checks for Rust
684 </para>
685 <indexterm zone="rust clippy-driver">
686 <primary sortas="b-clippy-driver">clippy-driver</primary>
687 </indexterm>
688 </listitem>
689 </varlistentry>
690
691<!-- <varlistentry id="miri">
692 <term><command>miri</command></term>
693 <listitem>
694 <para>
695 is an interpreter for Rust's mid-level intermediate representation
696 (MIR). It is not installed by default.
697 </para>
698 <indexterm zone="rust miri">
699 <primary sortas="b-miri">miri</primary>
700 </indexterm>
701 </listitem>
702 </varlistentry>
703
704 <varlistentry id="rls">
705 <term><command>rls</command></term>
706 <listitem>
707 <para>
708 is the Rust Language Server. This can run in the background to
709 provide IDEs, editors, and other tools with information about Rust
710 programs
711 </para>
712 <indexterm zone="rust rls">
713 <primary sortas="b-rls">rls</primary>
714 </indexterm>
715 </listitem>
716 </varlistentry>
717
718 <varlistentry id="rust-analyzer">
719 <term><command>rust-analyzer</command></term>
720 <listitem>
721 <para>
722 is an implementation of Language Server Protocol for the Rust
723 programming language.
724 </para>
725 <indexterm zone="rust rust-analyzer">
726 <primary sortas="b-rust-analyzer">rust-analyzer</primary>
727 </indexterm>
728 </listitem>
729 </varlistentry>
730
731 <varlistentry id="rust-demangler">
732 <term><command>rust-demangler</command></term>
733 <listitem>
734 <para>
735 converts a list of Rust mangled symbols into a
736 corresponding list of demangled symbols
737 </para>
738 <indexterm zone="rust rust-demangler">
739 <primary sortas="b-rust-demangler">rust-demangler</primary>
740 </indexterm>
741 </listitem>
742 </varlistentry> -->
743
744 <varlistentry id="rust-gdb">
745 <term><command>rust-gdb</command></term>
746 <listitem>
747 <para>
748 is a wrapper script for gdb, pulling in Python pretty-printing
749 modules installed in
750 <filename class="directory">/opt/rustc-&rust-version;/lib/rustlib/etc</filename>
751 </para>
752 <indexterm zone="rust rust-gdb">
753 <primary sortas="b-rust-gdb">rust-gdb</primary>
754 </indexterm>
755 </listitem>
756 </varlistentry>
757
758 <varlistentry id="rust-gdbgui">
759 <term><command>rust-gdbgui</command></term>
760 <listitem>
761 <para>
762 is a wrapper script for a graphical front end to gdb that runs in a
763 browser
764 </para>
765 <indexterm zone="rust rust-gdbgui">
766 <primary sortas="b-rust-gdbgui">rust-gdbgui</primary>
767 </indexterm>
768 </listitem>
769 </varlistentry>
770
771 <varlistentry id="rust-lldb">
772 <term><command>rust-lldb</command></term>
773 <listitem>
774 <para>
775 is a wrapper script for LLDB (the LLVM debugger)
776 pulling in the Python pretty-printing modules
777 </para>
778 <indexterm zone="rust rust-lldb">
779 <primary sortas="b-rust-lldb">rust=lldb</primary>
780 </indexterm>
781 </listitem>
782 </varlistentry>
783
784 <varlistentry id="rustc">
785 <term><command>rustc</command></term>
786 <listitem>
787 <para>
788 is the rust compiler
789 </para>
790 <indexterm zone="rust rustc">
791 <primary sortas="b-rustc">rustc</primary>
792 </indexterm>
793 </listitem>
794 </varlistentry>
795
796 <varlistentry id="rustdoc">
797 <term><command>rustdoc</command></term>
798 <listitem>
799 <para>
800 generates documentation from rust source code
801 </para>
802 <indexterm zone="rust rustdoc">
803 <primary sortas="b-rustdoc">rustdoc</primary>
804 </indexterm>
805 </listitem>
806 </varlistentry>
807
808 <varlistentry id="rustfmt">
809 <term><command>rustfmt</command></term>
810 <listitem>
811 <para>
812 formats rust code
813 </para>
814 <indexterm zone="rust rustfmt">
815 <primary sortas="b-rustfmt">rustfmt</primary>
816 </indexterm>
817 </listitem>
818 </varlistentry>
819
820 <varlistentry id="libstd">
821 <term><filename class="libraryfile">libstd-&lt;16-byte-hash&gt;.so</filename></term>
822 <listitem>
823 <para>
824 is the Rust Standard Library, the foundation of portable Rust software
825 </para>
826 <indexterm zone="rust libstd">
827 <primary sortas="c-libstd">libstd-&lt;16-byte-hash&gt;.so</primary>
828 </indexterm>
829 </listitem>
830 </varlistentry>
831 </variablelist>
832 </sect2>
833
834</sect1>
Note: See TracBrowser for help on using the repository browser.