source: general/prog/rust.xml@ c0dfeea

11.2 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/soup3 xry111/xf86-video-removal
Last change on this file since c0dfeea was c0dfeea, checked in by Xi Ruoyao <xry111@…>, 20 months ago

rust: it's broken on non-SSE2 i686

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