source: general/prog/rust.xml@ 0d713c9

11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since 0d713c9 was 48771ae, checked in by David Bryant <davidbryant@…>, 19 months ago

Unless it's a directory name, or something like that, "test suite"
should be spelled as two words.

  • Property mode set to 100644
File size: 30.0 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
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 "e77ac3a786d013604061b17f99dd9b27">
10 <!ENTITY rust-size "131 MB">
11 <!-- Gentle Reminder: buildsize is how much the user requires for the real
12 install, i.e. the source with its DESTDIR *plus* the DESTDIR. You
13 can 'mkdir /tmp/RUST ; cp -a install/* /tmp/RUST' and then run 'du -sch'
14 to measure it, or du -sm to look at the size of the build tree before and
15 after the tests. -->
16
17 <!ENTITY rust-buildsize "10 GB (516 MB installed) including 266 MB of ~/.cargo files for the user building this. Add 6.2 GB including extra 243 MB of ~/.cargo files if running the tests">
18 <!ENTITY rust-time "21 SBU (including download time; add 10 SBU for tests, both on a 4-core machine)">
19]>
20
21<sect1 id="rust" xreflabel="rustc-&rust-version;">
22 <?dbhtml filename="rust.html"?>
23
24
25 <title>Rustc-&rust-version;</title>
26
27 <indexterm zone="rust">
28 <primary sortas="a-rust">Rust</primary>
29 </indexterm>
30
31 <sect2 role="package">
32 <title>Introduction to Rust</title>
33 <para>
34 The <application>Rust</application> programming language is designed
35 to be a safe, concurrent, practical language.
36 </para>
37
38 <para>
39 This package is updated on a six-weekly release cycle. Because it is
40 such a large and slow package to build, is at the moment only required
41 by a few packages in this book, and particularly because newer versions
42 tend to break older mozilla packages, the BLFS editors take the view that
43 it should only be updated when that is necessary (either to fix problems,
44 or to allow a new version of a package to build).
45 </para>
46
47 <para>
48 As with many other programming languages, rustc (the rust compiler)
49 needs a binary from which to bootstrap. It will download a stage0 binary
50 and many cargo crates (these are actually .tar.gz source archives) at
51 the start of the build, so you cannot compile it without an internet
52 connection.
53 </para>
54
55 <para>
56 These crates will then remain in various forms (cache, directories of
57 extracted source), in <filename class="directory">~/.cargo</filename> for
58 ever more. It is common for large <application>rust</application> packages
59 to use multiple versions of some crates. If you purge the files before
60 updating this package, very few crates will need to be updated by the
61 packages in this book which use it (and they will be downloaded as
62 required). But if you retain an older version as a fallback option and
63 then use it (when <emphasis>not</emphasis> building in
64 <filename class="directory">/usr</filename>), it is likely that it will
65 then have to re-download some crates. For a full download (i.e. starting
66 with an empty or missing <filename class="directory">~/.cargo</filename>)
67 downloading the external cargo files for this version only takes a minute
68 or so on a fast network.
69 </para>
70
71 <note>
72 <para>
73 Although BLFS usually installs in <filename
74 class="directory">/usr</filename>, when you later upgrade to a newer
75 version of <application>rust</application> the old libraries in <filename
76 class="directory">/usr/lib/rustlib</filename> will remain, with various
77 hashes in their names, but will not be usable and will waste space. The
78 editors recommend placing the files in the <filename
79 class="directory">/opt</filename> directory. In particular, if you
80 have reason to rebuild with a modified configuration (e.g. using the
81 shipped LLVM after building with shared LLVM, perhaps to compile crates
82 for architectures which the BLFS LLVM build does not support)
83 it is possible for the install to leave a broken
84 <command>cargo</command> program. In such a situation, either remove
85 the existing installation first, or use a different prefix such as
86 /opt/rustc-&rust-version;-build2.
87 </para>
88
89 <para>
90 If you prefer, you can of course change the prefix to <filename
91 class="directory">/usr</filename> and omit the
92 <command>ldconfig</command> and the actions to add rustc to the PATH.
93 </para>
94 </note>
95
96 <para>
97 The current <application>rustbuild</application> build-system will use
98 all processors, although it does not scale well and often falls
99 back to just using one core while waiting for a library to compile.
100 However it can be mostly limited to a specified number of processors by
101 a combination of adding the switch <literal>--jobs &lt;N&gt;</literal>
102 (e.g. '--jobs 4' to limit to 4 processors) on each invocation of
103 <command>python3 ./x.py</command> <emphasis>and</emphasis> using an
104 environment variable <envar>CARGO_BUILD_JOBS=&lt;N&gt;</envar>. At the
105 moment this is not effective when some of the rustc tests are run.
106 </para>
107
108 <para>
109 The current version of rust's num_cpus crate now recognizes that cgroups
110 can be used to restrict which processors it is allowed to use. So if your
111 machine lacks DRAM (typically, less than 2GB DRAM per core) that might be
112 an alternative to taking CPUs offline.
113 <phrase revision="sysv">In sysv systems cgroups requires <ulink
114 url="https://sourceforge.net/projects/libcg/">libcgroup</ulink>.</phrase>
115 <phrase revision="systemd">That can be achieved by using
116 <command>systemd-run</command> command with
117 <parameter>-p User=$(whoami)</parameter> and
118 <parameter>-p AllowedCPUs=0-<replaceable>x</replaceable></parameter>
119 (with <replaceable>x</replaceable> replaced with the number of CPU
120 cores you want to use minus one) options.</phrase>
121 </para>
122
123 <para>
124 At the moment <application>Rust</application> does not provide any
125 guarantees of a stable ABI.
126 </para>
127
128 <note>
129 <para>
130 Rustc defaults to building for ALL supported architectures, using a
131 shipped copy of LLVM. In BLFS the build is only for the X86
132 architecture.
133 If you intend to develop rust crates, this build may not be good
134 enough for your purposes.
135 </para>
136 <para>
137 The build times of this version when repeated on the same machine are
138 often reasonably consistent, but as with all compilations using
139 <command>rustc</command> there can be some very slow outliers.
140 </para>
141 <para>
142 Unusually, a DESTDIR-style method is being used to install this package.
143 This is because running the install as root not only downloads all of the
144 cargo files again (to <filename>/root/.cargo</filename>), it then spends
145 a very long time recompiling. Using this method saves a lot of time, at
146 the cost of extra disk space.
147 </para>
148 </note>
149
150 &lfs112_checked;
151
152 <bridgehead renderas="sect3">Package Information</bridgehead>
153 <itemizedlist spacing="compact">
154 <listitem>
155 <para>
156 Download (HTTP): <ulink url="&rust-download-http;"/>
157 </para>
158 </listitem>
159 <listitem>
160 <para>
161 Download (FTP): <ulink url="&rust-download-ftp;"/>
162 </para>
163 </listitem>
164 <listitem>
165 <para>
166 Download MD5 sum: &rust-md5sum;
167 </para>
168 </listitem>
169 <listitem>
170 <para>
171 Download size: &rust-size;
172 </para>
173 </listitem>
174 <listitem>
175 <para>
176 Estimated disk space required: &rust-buildsize;
177 </para>
178 </listitem>
179 <listitem>
180 <para>
181 Estimated build time: &rust-time;
182 </para>
183 </listitem>
184 </itemizedlist>
185
186<!--<bridgehead renderas="sect3">Additional Downloads</bridgehead>
187 <itemizedlist spacing="compact">
188 <listitem>
189 <para>
190 Required patch:
191 <ulink url="&patch-root;/rustc-&rust-version;-llvm9_fixes-1.patch"/>
192 </para>
193 </listitem>
194 </itemizedlist>-->
195
196 <bridgehead renderas="sect3">Rust Dependencies</bridgehead>
197
198 <bridgehead renderas="sect4">Required</bridgehead>
199 <para role="required">
200 <xref linkend="cmake"/>
201 </para>
202
203 <bridgehead renderas="sect4">Recommended</bridgehead>
204 <para role="recommended">
205 <xref linkend="curl"/>,
206 <xref linkend="libssh2"/>, and
207 <xref linkend="llvm"/>
208 (built with -DLLVM_LINK_LLVM_DYLIB=ON so that rust can link to
209 system LLVM instead of building its shipped version)
210 </para>
211
212 <note>
213 <para>
214 If a recommended dependency is not installed, a shipped copy in the
215 Rustc source tarball will be built and used.
216 </para>
217 </note>
218
219 <bridgehead renderas="sect4">Optional</bridgehead>
220 <para role="optional">
221 <xref linkend="gdb"/> (used by the test suite if it is present) and
222 <ulink url='https://libgit2.org/'>libgit2</ulink>
223 </para>
224
225 <para condition="html" role="usernotes">
226 User Notes: <ulink url="&blfs-wiki;/rust"/>
227 </para>
228 </sect2>
229
230 <sect2 role="installation">
231 <title>Installation of Rust</title>
232
233 <note>
234 <para>
235 Currently Rust compiler produces SSE2 instructions for 32-bit x86,
236 causing the generated code broken on 32-bit systems without a
237 SSE2-capable processor. All x86 processor models released after
238 2004 should be SSE2-capable. Run
239 <command>lscpu | grep sse2</command> as a test. If it outputs
240 anything, your CPU is SSE2-capable and OK. Otherwise you may try
241 to build this package <emphasis>on a SSE2-capable system</emphasis>
242 with the following fix applied:
243 </para>
244
245 <!-- computeroutput used deliberately to stop anyone from copying
246 blindly -->
247<screen role="nodump"><computeroutput>sed 's@pentium4@pentiumpro@' -i \
248 compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs</computeroutput></screen>
249
250 <para>
251 And copy the resulting
252 <filename class="directory">/opt/rustc-&rust-version;</filename>
253 to the system without SSE2 capability. But this change is still
254 under upstream review and not tested by BLFS editors.
255 </para>
256 </note>
257
258 <para>
259 To install into the
260 <filename class="directory">/opt</filename> directory, remove the symlink
261 and create a new directory (i.e. with a different name if trying a
262 modified build).
263 As the <systemitem class="username">root</systemitem>
264 user:
265 </para>
266
267<screen role="root"><userinput>mkdir /opt/rustc-&rust-version; &amp;&amp;
268ln -svfn rustc-&rust-version; /opt/rustc</userinput></screen>
269
270 <note>
271 <para>
272 If multiple versions of <application>Rust</application> are installed
273 in <filename class="directory">/opt</filename>, changing to another
274 version only requires changing the <filename> /opt/rustc</filename>
275 symbolic link and then running <command>ldconfig</command>.
276 </para>
277 </note>
278
279 <para>
280 Create a suitable <filename>config.toml</filename> file which will
281 configure the build.
282 </para>
283
284<screen><userinput>cat &lt;&lt; EOF &gt; config.toml
285<literal># see config.toml.example for more possible options
286# See the 8.4 book for an example using shipped LLVM
287# e.g. if not installing clang, or using a version before 10.0
288[llvm]
289# by default, rust will build for a myriad of architectures
290targets = "X86"
291
292# When using system llvm prefer shared libraries
293link-shared = true
294
295[build]
296# omit docs to save time and space (default is to build them)
297docs = false
298
299# install cargo as well as rust
300extended = true
301
302[install]
303prefix = "/opt/rustc-&rust-version;"
304docdir = "share/doc/rustc-&rust-version;"
305
306[rust]
307channel = "stable"
308rpath = false
309
310# BLFS does not install the FileCheck executable from llvm,
311# so disable codegen tests
312codegen-tests = false
313
314[target.x86_64-unknown-linux-gnu]
315# NB the output of llvm-config (i.e. help options) may be
316# dumped to the screen when config.toml is parsed.
317llvm-config = "/usr/bin/llvm-config"
318
319[target.i686-unknown-linux-gnu]
320# NB the output of llvm-config (i.e. help options) may be
321# dumped to the screen when config.toml is parsed.
322llvm-config = "/usr/bin/llvm-config"
323
324</literal>
325EOF</userinput></screen>
326
327<!--<para>
328 Adapt rustc to allow it to build and function with the changes in LLVM-9:
329 </para>
330
331<screen><userinput remap="pre">patch -Np1 -i ../rustc-&rust-version;-llvm9_fixes-1.patch</userinput></screen>-->
332
333 <para>
334 Compile <application>Rust</application> by running the following
335 commands:
336 </para>
337
338<!-- fixed in 1.58.0, retain as a reminder that fixed crates can be used
339<screen><userinput>sed -i -e '/^curl /s/0.4.38/0.4.40/' \
340 -e '/^curl-sys /s/0.4.48/0.4.50/' \
341 src/tools/cargo/Cargo.toml &amp;&amp; -->
342
343<screen><userinput>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" &amp;&amp;
344{ [ ! -e /usr/include/libssh2.h ] ||
345 export LIBSSH2_SYS_USE_PKG_CONFIG=1; } &amp;&amp;
346python3 ./x.py build --exclude src/tools/miri</userinput></screen>
347
348 <note>
349 <para>
350 The test suite will generate some messages in the
351 <phrase revision="sysv">system log</phrase>
352 <phrase revision="systemd">systemd journal</phrase>
353 for traps on invalid opcodes, and for segmentation faults.
354 In themselves these are nothing to worry about, just a way for the
355 test to be terminated.
356 </para>
357 </note>
358
359 <para>
360 To run the tests issue <command>python3 ./x.py test --verbose
361 --no-fail-fast | tee rustc-testlog</command>: as with the build, that
362 will use all available CPUs.
363 </para>
364
365 <para>
366 At a minimum, 51 tests will fail: all 46 of the tests in
367 the <quote>assembly</quote> suite which are not skipped (various lints
368 cause the warnings in these tests to be treated as errors), and
369 5 other tests, 4 of which involve the
370 <filename>rustdoc-ui/issue-98690.rs</filename> file, and another one,
371 <filename>run-make-fulldeps/long-linker-command-lines</filename>.
372<!-- If <command>gdb</command> is installed, another failure
373 (debuginfo/function-names.rs) can be expected.
374 # seems ok with 11.2 ken -->
375 </para>
376
377 <para>
378 As with all large test suites, other tests might fail on some machines -
379 if the number of additional failures is in the single digits,
380 check the log for 'failures:' and review lines above that, particularly the
381 'stderr:' lines. Any mention of
382 SIGSEGV or signal 11 in a failing test is a cause for concern.
383 </para>
384
385 <para>
386 If you get any <emphasis>other</emphasis> failing test which reports an
387 issue number then you should search for that issue. For example, when
388 rustc &gt;= 1.41.1 was built with a version of sysllvm before 10.0 the test
389 for issue 69225 failed <ulink
390 url="https://github.com/rust-lang/rust/issues/69225"/> and that should be
391 regarded as a critical failure (they released 1.41.1 because of it).
392 Most other failures will not be critical.
393 </para>
394
395 <para>
396 Therefore, you should determine the number of failures.
397 </para>
398
399<!--
400 The total number
401 of tests varies depending on which dependencies are present, e.g. more
402 will be run if <command>gdb</command> is available. If you wish, the
403 total number which were considered can be found if you run:
404 </para>
405
406<screen remap="test"><userinput>egrep 'running [[:digit:]]+ test' rustc-testlog | awk '{ sum += $2 } END { print sum }'</userinput></screen>-->
407
408 <para>
409 The number of tests which failed can be found by running:
410 </para>
411
412<screen remap="test"><userinput>grep '^test result:' rustc-testlog | awk '{ sum += $6 } END { print sum }'</userinput></screen>
413
414 <para>
415 And similarly if you care about how many tests passed use $4, for those
416 which were ignored (i.e. skipped) use $8 (and $10 for 'measured', $12 for
417 'filtered out' but both are probably zero).
418 </para>
419
420 <para>
421 Still as your normal user, do a DESTDIR install:
422 </para>
423
424<screen><userinput>DESTDIR=${PWD}/install python3 ./x.py install &amp;&amp;
425unset LIBSSH2_SYS_USE_PKG_CONFIG</userinput></screen>
426
427 <para>
428 Now, as the <systemitem class="username">root</systemitem> user
429 install the files from the DESTDIR:
430 </para>
431
432<screen role="root"><userinput>chown -R root:root install &amp;&amp;
433cp -a install/* /</userinput></screen>
434
435 </sect2>
436
437 <sect2 role="commands">
438 <title>Command Explanations</title>
439
440 <para>
441 <command>ln -svfn rustc-&rust-version; /opt/rustc</command>: if this is
442 not the first use of the <filename class="directory">/opt/rustc</filename>
443 symlink, overwrite it by forcing, and use the '-n' flag to avoid getting
444 confusing results from e.g. <command>ls -l</command>.
445 </para>
446
447 <para>
448 <command>targets = "X86"</command>: this avoids building all the available
449 linux cross-compilers (Aarch64, MIPS, PowerPC, SystemZ, etc). Unfortunately,
450 rust insists on installing source files for these below
451 <filename class="directory">/opt/rustc/lib/src</filename>.
452 </para>
453
454 <para>
455 <command>extended = true</command>: this installs Cargo alongside Rust.
456 </para>
457
458 <para>
459 <command>channel = "stable"</command>: this ensures only stable features
460 can be used, the default in <filename>config.toml</filename> is to use
461 development features, which is not appropriate for a released version.
462 </para>
463
464 <para>
465 <command>rpath = false</command>: by default, <command>rust</command> can
466 be run from where it was built, without being installed. That adds DT_RPATH
467 entries to all of the ELF files, which produces very messy output from
468 <command>ldd</command>, showing the libraries in the place they were built,
469 even if they have been deleted from there after the install.
470 </para>
471
472 <!-- comment while using shipped LLVM -->
473 <para>
474 <command>[target.x86_64-unknown-linux-gnu]</command>: the syntax of
475 <filename>config.toml</filename> requires an <literal>llvm-config</literal>
476 entry for each target for which system-llvm is to be used. Change the target
477 to <literal>[target.i686-unknown-linux-gnu]</literal> if you are building
478 on 32-bit x86. This whole section may be omitted if you wish to build
479 against the shipped llvm, or do not have clang, but the resulting build will
480 be larger and take longer.
481 </para>
482
483<!--<para>
484 <command>sed -i -e '/^curl /s/0.4.38/0.4.40/' ... </command>: two crates
485 normally downloaded for this release do not correctly initialise
486 <application>curl</application> if using
487 <application>openssl-3.0.0</application>. Upstream has fixed that for a
488 future release, this sed causes the fixed versions to be used.
489 </para>-->
490
491 <para>
492 <command>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"</command>:
493 This adds a link to libffi to any RUSTFLAGS you may already be passing
494 to the build. On some systems, linking fails to include libffi unless
495 this is used. The reason why this is needed is not clear.
496 </para>
497
498 <para>
499 <command>--exclude src/tools/miri</command>: For a long time, the miri
500 crate (an interpreter for the Midlevel Intermediate Representation)
501 has failed to build on releases. It is optional, but the failure
502 messages can persuade people that the whole build failed. However,
503 although it is not built in the main compile, with rustc-1.35.0 it
504 now got compiled during the install, but it was broken in that version.
505 <!-- might be unbroken in 1.36.0, if so remove broken from description
506 of miri below. https://github.com/rust-lang/rust/issues/61830 -->
507 Omitting it should save a little time. Even if this switch is
508 not given, miri is not installed.
509 </para>
510
511 <para>
512 <command>--verbose</command>: this switch can sometimes provide more
513 information about a test which fails.
514 </para>
515
516 <para>
517 <command>--no-fail-fast</command>: this switch ensures that the test suite
518 will not stop at the first error.
519 </para>
520
521 <!-- https://github.com/alexcrichton/ssh2-rs/issues/173 -->
522 <para>
523 <command>export LIBSSH2_SYS_USE_PKG_CONFIG=1</command>: Allow
524 <command>cargo</command> to link to system libssh2.
525 </para>
526
527 <para>
528 <command>DESTDIR=${PWD}/install python3 ./x.py install</command>: This
529 effects a DESTDIR-style install in the source tree,creating an <filename
530 class="directory">install</filename> directory. Note that DESTDIR installs
531 need an absolute path, passing 'install' will not work.
532 </para>
533
534 <para>
535 <command>chown -R root:root install</command>: the DESTDIR install
536 was run by a regular user, who owns the files. For security, change their
537 owner before doing a simple copy to install them.
538 </para>
539
540 </sect2>
541
542 <sect2 role="configuration">
543 <title>Configuring Rust</title>
544
545 <sect3 id="rustc-config">
546 <title>Configuration Information</title>
547
548 <para>
549 If you installed <application>rustc</application> in
550 <filename class="directory">/opt</filename>, you need to update the
551 following configuration files so that <application>rustc</application>
552 is correctly found by other packages and system processes.
553 </para>
554
555 <para>
556 As the <systemitem class="username">root</systemitem> user, update
557 the <filename>/etc/ld.so.conf</filename> file and the dynamic linker's
558 run-time cache file:
559 </para>
560
561<screen role="root"><userinput>cat &gt;&gt; /etc/ld.so.conf &lt;&lt; EOF
562<literal># Begin rustc addition
563
564/opt/rustc/lib
565
566# End rustc addition</literal>
567EOF
568
569ldconfig</userinput></screen>
570
571 <indexterm zone="rust rustc-config">
572 <primary sortas="e-etc-ld.so.conf">/etc/ld.so.conf</primary>
573 </indexterm>
574
575 <para>
576 As the <systemitem class="username">root</systemitem> user, create
577 the <filename>/etc/profile.d/rustc.sh</filename> file:
578 </para>
579
580<screen role="root"><userinput>cat &gt; /etc/profile.d/rustc.sh &lt;&lt; "EOF"
581<literal># Begin /etc/profile.d/rustc.sh
582
583pathprepend /opt/rustc/bin PATH
584
585# Include /opt/rustc/man in the MANPATH variable to access manual pages
586pathappend /opt/rustc/share/man MANPATH
587
588# End /etc/profile.d/rustc.sh</literal>
589EOF</userinput></screen>
590
591 <para>
592 Immediately after installation, update the current PATH
593 for your current shell as a normal user:
594 </para>
595
596<screen><userinput>source /etc/profile.d/rustc.sh</userinput></screen>
597
598 </sect3>
599 </sect2>
600
601
602 <sect2 role="content">
603 <title>Contents</title>
604
605 <segmentedlist>
606 <segtitle>Installed Programs</segtitle>
607 <segtitle>Installed Libraries</segtitle>
608 <segtitle>Installed Directories</segtitle>
609
610 <seglistitem>
611 <seg>
612 cargo-clippy, cargo-fmt, cargo-miri (optional), cargo, clippy-driver,
613 miri (optional), rls, rust-analyzer, rust-demangler, rust-gdb,
614 rust-gdbgui, rust-lldb, rustc, rustdoc, and rustfmt
615 </seg>
616 <seg>
617 librustc-driver-&lt;16-byte-hash&gt;.so,
618 libstd-&lt;16-byte-hash&gt;.so, and
619 libtest-&lt;16-byte-hash&gt;.so
620 </seg>
621 <seg>
622 ~/.cargo,
623 /opt/rustc, symbolic link to
624 /opt/rustc-&rust-version;
625 </seg>
626 </seglistitem>
627 </segmentedlist>
628
629 <variablelist>
630 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
631 <?dbfo list-presentation="list"?>
632 <?dbhtml list-presentation="table"?>
633
634 <varlistentry id="cargo-clippy">
635 <term><command>cargo-clippy</command></term>
636 <listitem>
637 <para>
638 provides lint checks for a cargo package
639 </para>
640 <indexterm zone="rust cargo-clippy">
641 <primary sortas="b-cargo-clippy">cargo-clippy</primary>
642 </indexterm>
643 </listitem>
644 </varlistentry>
645
646 <varlistentry id="cargo-fmt">
647 <term><command>cargo-fmt</command></term>
648 <listitem>
649 <para>
650 formats all bin and lib files of the current crate using
651 rustfmt
652 </para>
653 <indexterm zone="rust cargo-fmt">
654 <primary sortas="b-cargo-fmt">cargo-fmt</primary>
655 </indexterm>
656 </listitem>
657 </varlistentry>
658
659 <varlistentry id="cargo-miri">
660 <term><command>cargo-miri</command></term>
661 <listitem>
662 <para>
663 is for use by Miri to interpret bin crates and tests. It is
664 not installed by default.
665 </para>
666 <indexterm zone="rust cargo-miri">
667 <primary sortas="b-cargo-miri">cargo-miri</primary>
668 </indexterm>
669 </listitem>
670 </varlistentry>
671
672 <varlistentry id="cargo">
673 <term><command>cargo</command></term>
674 <listitem>
675 <para>
676 is the Package Manager for Rust
677 </para>
678 <indexterm zone="rust cargo">
679 <primary sortas="b-cargo">cargo</primary>
680 </indexterm>
681 </listitem>
682 </varlistentry>
683
684 <varlistentry id="clippy-driver">
685 <term><command>clippy-driver</command></term>
686 <listitem>
687 <para>
688 provides lint checks for Rust
689 </para>
690 <indexterm zone="rust clippy-driver">
691 <primary sortas="b-clippy-driver">clippy-driver</primary>
692 </indexterm>
693 </listitem>
694 </varlistentry>
695
696 <varlistentry id="miri">
697 <term><command>miri</command></term>
698 <listitem>
699 <para>
700 is an interpreter for Rust's mid-level intermediate representation
701 (MIR). It is not installed by default.
702 </para>
703 <indexterm zone="rust miri">
704 <primary sortas="b-miri">miri</primary>
705 </indexterm>
706 </listitem>
707 </varlistentry>
708
709 <varlistentry id="rls">
710 <term><command>rls</command></term>
711 <listitem>
712 <para>
713 is the Rust Language Server. This can run in the background to
714 provide IDEs, editors, and other tools with information about Rust
715 programs
716 </para>
717 <indexterm zone="rust rls">
718 <primary sortas="b-rls">rls</primary>
719 </indexterm>
720 </listitem>
721 </varlistentry>
722
723 <varlistentry id="rust-analyzer">
724 <term><command>rust-analyzer</command></term>
725 <listitem>
726 <para>
727 is an implementation of Language Server Protocol for the Rust
728 programming language.
729 </para>
730 <indexterm zone="rust rust-analyzer">
731 <primary sortas="b-rust-analyzer">rust-analyzer</primary>
732 </indexterm>
733 </listitem>
734 </varlistentry>
735
736 <varlistentry id="rust-demangler">
737 <term><command>rust-demangler</command></term>
738 <listitem>
739 <para>
740 converts a list of Rust mangled symbols into a
741 corresponding list of demangled symbols
742 </para>
743 <indexterm zone="rust rust-demangler">
744 <primary sortas="b-rust-demangler">rust-demangler</primary>
745 </indexterm>
746 </listitem>
747 </varlistentry>
748
749 <varlistentry id="rust-gdb">
750 <term><command>rust-gdb</command></term>
751 <listitem>
752 <para>
753 is a wrapper script for gdb, pulling in Python pretty-printing
754 modules installed in
755 <filename class="directory">/opt/rustc-&rust-version;/lib/rustlib/etc</filename>
756 </para>
757 <indexterm zone="rust rust-gdb">
758 <primary sortas="b-rust-gdb">rust-gdb</primary>
759 </indexterm>
760 </listitem>
761 </varlistentry>
762
763 <varlistentry id="rust-gdbgui">
764 <term><command>rust-gdbgui</command></term>
765 <listitem>
766 <para>
767 is a wrapper script for a graphical front end to gdb that runs in a
768 browser
769 </para>
770 <indexterm zone="rust rust-gdbgui">
771 <primary sortas="b-rust-gdbgui">rust-gdbgui</primary>
772 </indexterm>
773 </listitem>
774 </varlistentry>
775
776 <varlistentry id="rust-lldb">
777 <term><command>rust-lldb</command></term>
778 <listitem>
779 <para>
780 is a wrapper script for LLDB (the LLVM debugger)
781 pulling in the Python pretty-printing modules
782 </para>
783 <indexterm zone="rust rust-lldb">
784 <primary sortas="b-rust-lldb">rust=lldb</primary>
785 </indexterm>
786 </listitem>
787 </varlistentry>
788
789 <varlistentry id="rustc">
790 <term><command>rustc</command></term>
791 <listitem>
792 <para>
793 is the rust compiler
794 </para>
795 <indexterm zone="rust rustc">
796 <primary sortas="b-rustc">rustc</primary>
797 </indexterm>
798 </listitem>
799 </varlistentry>
800
801 <varlistentry id="rustdoc">
802 <term><command>rustdoc</command></term>
803 <listitem>
804 <para>
805 generates documentation from rust source code
806 </para>
807 <indexterm zone="rust rustdoc">
808 <primary sortas="b-rustdoc">rustdoc</primary>
809 </indexterm>
810 </listitem>
811 </varlistentry>
812
813 <varlistentry id="rustfmt">
814 <term><command>rustfmt</command></term>
815 <listitem>
816 <para>
817 formats rust code
818 </para>
819 <indexterm zone="rust rustfmt">
820 <primary sortas="b-rustfmt">rustfmt</primary>
821 </indexterm>
822 </listitem>
823 </varlistentry>
824
825 <varlistentry id="libstd">
826 <term><filename class="libraryfile">libstd-&lt;16-byte-hash&gt;.so</filename></term>
827 <listitem>
828 <para>
829 is the Rust Standard Library, the foundation of portable Rust software
830 </para>
831 <indexterm zone="rust libstd">
832 <primary sortas="c-libstd">libstd-&lt;16-byte-hash&gt;.so</primary>
833 </indexterm>
834 </listitem>
835 </varlistentry>
836 </variablelist>
837 </sect2>
838
839</sect1>
Note: See TracBrowser for help on using the repository browser.