source: general/prog/rust.xml@ 808aeec

12.1 ken/TL2024 ken/tuningfonts lazarus plabs/newcss python3.11 rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18
Last change on this file since 808aeec was 808aeec, checked in by Xi Ruoyao <xry111@…>, 8 months ago

rust: Update to rustc-1.72.0

  • Property mode set to 100644
File size: 29.3 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 "4125b8bf1b0bc6a520f8ec21252322e7">
10 <!ENTITY rust-size "145 MB">
11 <!ENTITY rust-buildsize "8.9 GB (292 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 2GB DRAM per core) that might be
88 an alternative to taking CPUs offline.
89 <phrase revision="sysv">In sysv systems cgroups requires <ulink
90 url="https://sourceforge.net/projects/libcg/">libcgroup</ulink>.</phrase>
91 <phrase revision="systemd">That can be achieved by using
92 <command>systemd-run</command> command with
93 <parameter>-p User=$(whoami)</parameter> and
94 <parameter>-p AllowedCPUs=0-<replaceable>x</replaceable></parameter>
95 (with <replaceable>x</replaceable> replaced with the number of CPU
96 cores you want to use minus one) options.</phrase>
97 </para>
98
99 <para>
100 At the moment <application>Rust</application> does not provide any
101 guarantees of a stable ABI.
102 </para>
103
104 <note>
105 <para>
106 Rustc defaults to building for ALL supported architectures, using a
107 shipped copy of LLVM. In BLFS the build is only for the X86
108 architecture.
109 If you intend to develop rust crates, this build may not be good
110 enough for your purposes.
111 </para>
112 <para>
113 The build times of this version when repeated on the same machine are
114 often reasonably consistent, but as with all compilations using
115 <command>rustc</command> there can be some very slow outliers.
116 </para>
117 </note>
118
119 &lfs120_checked;
120
121 <bridgehead renderas="sect3">Package Information</bridgehead>
122 <itemizedlist spacing="compact">
123 <listitem>
124 <para>
125 Download (HTTP): <ulink url="&rust-download-http;"/>
126 </para>
127 </listitem>
128 <listitem>
129 <para>
130 Download (FTP): <ulink url="&rust-download-ftp;"/>
131 </para>
132 </listitem>
133 <listitem>
134 <para>
135 Download MD5 sum: &rust-md5sum;
136 </para>
137 </listitem>
138 <listitem>
139 <para>
140 Download size: &rust-size;
141 </para>
142 </listitem>
143 <listitem>
144 <para>
145 Estimated disk space required: &rust-buildsize;
146 </para>
147 </listitem>
148 <listitem>
149 <para>
150 Estimated build time: &rust-time;
151 </para>
152 </listitem>
153 </itemizedlist>
154
155<!--<bridgehead renderas="sect3">Additional Downloads</bridgehead>
156 <itemizedlist spacing="compact">
157 <listitem>
158 <para>
159 Required patch:
160 <ulink url="&patch-root;/rustc-&rust-version;-llvm9_fixes-1.patch"/>
161 </para>
162 </listitem>
163 </itemizedlist>-->
164
165 <bridgehead renderas="sect3">Rust Dependencies</bridgehead>
166
167 <bridgehead renderas="sect4">Required</bridgehead>
168 <para role="required">
169 <xref linkend="cmake"/> and
170 <!-- Required for downloading stage 0 binaries.
171 Otherwise it's recommended (if not installed, a vendored copy
172 will be built). -->
173 <xref linkend="curl"/>
174 </para>
175
176 &build-use-internet;
177
178 <bridgehead renderas="sect4">Recommended</bridgehead>
179 <para role="recommended">
180 <xref linkend="libssh2"/> and
181 <xref linkend="llvm"/>
182 (built with -DLLVM_LINK_LLVM_DYLIB=ON so that rust can link to
183 system LLVM instead of building its shipped version)
184 </para>
185
186 <note>
187 <para>
188 If a recommended dependency is not installed, a shipped copy in the
189 Rustc source tarball will be built and used.
190 </para>
191 </note>
192
193 <bridgehead renderas="sect4">Optional</bridgehead>
194 <para role="optional">
195 <xref linkend="gdb"/> (used by the test suite if it is present),
196 <xref linkend="git"/> (required by the test suite), and
197 <ulink url='https://libgit2.org/'>libgit2</ulink>
198 </para>
199
200 <para condition="html" role="usernotes">
201 Editor Notes: <ulink url="&blfs-wiki;/rust"/>
202 </para>
203 </sect2>
204
205 <sect2 role="installation">
206 <title>Installation of Rust</title>
207
208 <note>
209 <para>
210 Currently the rust compiler produces SSE2 instructions for 32-bit x86,
211 causing the generated code to be broken on 32-bit systems without a
212 SSE2-capable processor. All x86 processor models released after
213 2004 should be SSE2-capable. Run
214 <command>lscpu | grep sse2</command> as a test. If it outputs
215 anything, your CPU is SSE2-capable and OK. Otherwise you may try
216 to build this package <emphasis>on a SSE2-capable system</emphasis>
217 with the following fix applied:
218 </para>
219
220 <!-- computeroutput used deliberately to stop anyone from copying
221 blindly -->
222<screen role="nodump"><computeroutput>sed 's@pentium4@pentiumpro@' -i \
223 compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs</computeroutput></screen>
224
225 <para>
226 And copy the resulting
227 <filename class="directory">/opt/rustc-&rust-version;</filename>
228 to the system without SSE2 capability. But this change is still
229 under upstream review and not tested by BLFS editors.
230 </para>
231 </note>
232
233 <para>
234 To install into the
235 <filename class="directory">/opt</filename> directory, remove any
236 existing <filename>/opt/rustc</filename> symlink
237 and create a new directory (i.e. with a different name if trying a
238 modified build of the same version).
239 As the <systemitem class="username">root</systemitem>
240 user:
241 </para>
242
243<screen role="root"><userinput>mkdir -pv /opt/rustc-&rust-version; &amp;&amp;
244ln -svfn rustc-&rust-version; /opt/rustc</userinput></screen>
245
246 <note>
247 <para>
248 If multiple versions of <application>Rust</application> are installed
249 in <filename class="directory">/opt</filename>, changing to another
250 version only requires changing the <filename> /opt/rustc</filename>
251 symbolic link and then running <command>ldconfig</command>.
252 </para>
253 </note>
254
255 <para>
256 Create a suitable <filename>config.toml</filename> file which will
257 configure the build.
258 </para>
259
260<screen><userinput>cat &lt;&lt; EOF &gt; config.toml
261<literal># see config.toml.example for more possible options
262# See the 8.4 book for an old example using shipped LLVM
263# e.g. if not installing clang, or using a version before 13.0
264
265# tell x.py to not keep printing an annoying warning
266changelog-seen = 2
267
268[llvm]
269# by default, rust will build for a myriad of architectures
270targets = "X86"
271
272# When using system llvm prefer shared libraries
273link-shared = true
274
275[build]
276# omit docs to save time and space (default is to build them)
277docs = false
278
279# install extended tools: cargo, clippy, etc
280extended = true
281
282# Do not query new versions of dependencies online.
283locked-deps = true
284
285# Specify which extended tools (those from the default install).
286tools = ["cargo", "clippy", "rustdoc", "rustfmt"]
287
288# Use the source code shipped in the tarball for the dependencies.
289# The combination of this and the "locked-deps" entry avoids downloading
290# many crates from Internet, and makes the Rustc build more stable.
291vendor = true
292
293[install]
294prefix = "/opt/rustc-&rust-version;"
295docdir = "share/doc/rustc-&rust-version;"
296
297[rust]
298channel = "stable"
299description = "for BLFS &version;"
300
301# BLFS used to not install the FileCheck executable from llvm,
302# so disabled codegen tests. The assembly tests rely on FileCheck
303# and cannot easily be disabled, so those will anyway fail if
304# FileCheck has not been installed.
305#codegen-tests = false
306
307[target.x86_64-unknown-linux-gnu]
308# NB the output of llvm-config (i.e. help options) may be
309# dumped to the screen when config.toml is parsed.
310llvm-config = "/usr/bin/llvm-config"
311
312[target.i686-unknown-linux-gnu]
313# NB the output of llvm-config (i.e. help options) may be
314# dumped to the screen when config.toml is parsed.
315llvm-config = "/usr/bin/llvm-config"</literal>
316EOF</userinput></screen>
317
318<!--<para>
319 Adapt rustc to allow it to build and function with the changes in LLVM-9:
320 </para>
321
322<screen><userinput remap="pre">patch -Np1 -i ../rustc-&rust-version;-llvm9_fixes-1.patch</userinput></screen>-->
323
324 <para>
325 Compile <application>Rust</application> by running the following
326 commands:
327 </para>
328
329<!-- fixed in 1.58.0, retain as a reminder that fixed crates can be used
330<screen><userinput>sed -i -e '/^curl /s/0.4.38/0.4.40/' \
331 -e '/^curl-sys /s/0.4.48/0.4.50/' \
332 src/tools/cargo/Cargo.toml &amp;&amp; -->
333
334<screen><userinput>{ [ ! -e /usr/include/libssh2.h ] ||
335 export LIBSSH2_SYS_USE_PKG_CONFIG=1; } &amp;&amp;
336python3 x.py build</userinput></screen>
337
338 <note>
339 <para>
340 The test suite 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 (again using all available CPUs) issue:
351 </para>
352
353<screen remap="test"><userinput>mkdir -pv .github/workflows &amp;&amp;
354python3 x.py run src/tools/expand-yaml-anchors &amp;&amp;
355SSL_CERT_DIR=/etc/ssl/certs \
356python3 x.py test --verbose --no-fail-fast | tee rustc-testlog</userinput></screen>
357
358 <!-- https://github.com/rust-lang/rust/issues/112209
359 I only saw 2 failures with 1.71.1, but Rainer saw 6 ones.
360 I don't want to find out the maximum number (by building rustc
361 in somewhere like /a/very/long/long/long/.../long/path) so I'd
362 just omit the exact number of failures here. -->
363 <para>
364 Some <literal>ui</literal> tests may fail (the number of failures
365 depends on the length of the absolute path to the
366 <filename class='directory'>rustc-&rust-version;-src</filename>
367 directory). These failures can be identified by viewing the
368 <filename>rustc-testlog</filename> file and search for the
369 <computeroutput>note: the full type name has been written
370 to</computeroutput>... messages and they can be safely ignored.
371 </para>
372
373 <para>
374 If <command>FileCheck</command> from <application>LLVM</application> has
375 not been installed, all 47 tests from the <quote>assembly</quote> suite
376 will fail.
377 </para>
378
379 <para>
380 On some systems, scripting the tests may result in the tests hanging on
381 <filename>test: combine_install_with_separate_uninstall</filename>. If
382 this happens, the problem can be worked around by pressing the Enter key.
383 The test can also be removed with:
384 </para>
385
386<screen role="nodump"><userinput>sed -e '/runtest combine_install_with/s/^/#/g' -i src/tools/rust-installer/test.sh</userinput></screen>
387
388 <para>
389 As with all large test suites, other tests might fail on some machines -
390 if the number of additional failures is low,
391 check the log for 'failures:' and review lines above that, particularly the
392 'stderr:' lines. Any mention of
393 SIGSEGV or signal 11 in a failing test is a cause for concern.
394 </para>
395
396 <para>
397 If you get any <emphasis>other</emphasis> failing test which reports an
398 issue number then you should search for that issue. For example, when
399 rustc &gt;= 1.41.1 was built with a version of sysllvm before 10.0 the test
400 for issue 69225 failed <ulink
401 url="https://github.com/rust-lang/rust/issues/69225"/> and that should be
402 regarded as a critical failure (they released 1.41.1 because of it).
403 Most other failures will not be critical.
404 </para>
405
406 <para>
407 Therefore, you should determine the number of failures.
408 </para>
409
410 <para>
411 The number of tests which passed and failed can be found by running:
412 </para>
413
414<!-- split into two lines for narrower screen windows -->
415<screen remap="test"><userinput>grep '^test result:' rustc-testlog |
416 awk '{sum1 += $4; sum2 += $6} END { print sum1 " passed; " sum2 " failed" }'</userinput></screen>
417
418 <para>
419 The other available fields are $8 for those which were ignored
420 (i.e. skipped), $10 for 'measured' and $12 for 'filtered out' but both
421 those last two are probably zero.
422 </para>
423
424 <para>
425 Now, as the &root; user, install the package:
426 </para>
427
428 <note>
429 <para>
430 If <command>sudo</command> or <command>su</command> is invoked for
431 switching to the &root; user, ensure
432 <envar>LIBSSH2_SYS_USE_PKG_CONFIG</envar> is correctly passed or the
433 following command may completely rebuild this package. For
434 <command>sudo</command>, use the
435 <option>--preserve-env=LIBSSH2_SYS_USE_PKG_CONFIG</option> option.
436 For <command>su</command>, do <emphasis>not</emphasis> use the
437 <option>-</option> or <option>--login</option>.
438 </para>
439 </note>
440
441<screen role='root'><userinput>python3 x.py install</userinput></screen>
442
443 <!-- TODO: Report to upstream if this persists in the next release -->
444 <para>
445 The building system attempts to install some files twice, and during
446 the second attempt it renames the old one (installed in the first
447 attempt) with the <filename class='extension'>.old</filename> suffix.
448 As the &root; user, remove these files:
449 </para>
450
451 <screen role='root'><userinput>find /opt/rustc-&rust-version; -name "*.old" -delete</userinput></screen>
452
453 <para>
454 Still as the &root; user, symlink a <application>Zsh</application>
455 completion file into the correct location:
456 </para>
457
458<screen role='root'><userinput>install -vdm755 /usr/share/zsh/site-functions &amp;&amp;
459ln -sfv /opt/rustc/share/zsh/site-functions/_cargo \
460 /usr/share/zsh/site-functions</userinput></screen>
461
462 </sect2>
463
464 <sect2 role="commands">
465 <title>Command Explanations</title>
466
467 <para>
468 <command>ln -svfn rustc-&rust-version; /opt/rustc</command>: if this is
469 not the first use of the <filename class="directory">/opt/rustc</filename>
470 symlink, overwrite it by forcing, and use the '-n' flag to avoid getting
471 confusing results from e.g. <command>ls -l</command>.
472 </para>
473
474 <para>
475 <literal>targets = "X86"</literal>: this avoids building all the available
476 linux cross-compilers (AArch64, MIPS, PowerPC, SystemZ, etc). Unfortunately,
477 rust insists on installing source files for these below
478 <filename class="directory">/opt/rustc/lib/src</filename>.
479 </para>
480
481 <para>
482 <literal>extended = true</literal>: this installs several tools
483 (specified by the <literal>tools</literal> entry) alongside
484 <command>rustc</command>.
485 </para>
486
487 <para>
488 <literal>tools = ["cargo", "clippy", "rustdoc", "rustfmt"]</literal>:
489 only build the tools from the 'default' profile in binary command
490 <command>rustup</command> which are recommended for most users.
491 The other tools are unlikely to be useful unless using (old) code
492 analyzers or editing the standard library.
493 </para>
494
495 <para>
496 <literal>channel = "stable"</literal>: this ensures only stable features
497 can be used, the default in <filename>config.toml</filename> is to use
498 development features, which is not appropriate for a released version.
499 </para>
500
501 <!-- comment while using shipped LLVM -->
502 <para>
503 <literal>[target.x86_64-unknown-linux-gnu]</literal>: the syntax of
504 <filename>config.toml</filename> requires an <literal>llvm-config</literal>
505 entry for each target for which system-llvm is to be used. Change the target
506 to <literal>[target.i686-unknown-linux-gnu]</literal> if you are building
507 on 32-bit x86. This whole section may be omitted if you wish to build
508 against the shipped llvm, or do not have clang, but the resulting build will
509 be larger and take longer.
510 </para>
511
512<!--<para>
513 <command>sed -i -e '/^curl /s/0.4.38/0.4.40/' ... </command>: two crates
514 normally downloaded for this release do not correctly initialise
515 <application>curl</application> if using
516 <application>openssl-3.0.0</application>. Upstream has fixed that for a
517 future release, this sed causes the fixed versions to be used.
518 </para>-->
519
520 <!-- https://github.com/alexcrichton/ssh2-rs/issues/173 -->
521 <para>
522 <command>export LIBSSH2_SYS_USE_PKG_CONFIG=1</command>: Allow
523 <command>cargo</command> to link to system libssh2.
524 </para>
525
526<!--<para>
527 <command>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"</command>:
528 This adds a link to libffi to any RUSTFLAGS you may already be passing
529 to the build. On some systems, linking fails to include libffi unless
530 this is used. The reason why this is needed is not clear.
531 2023-01-14 : assumed to be no longer needed, but it is some years
532 since one person reported needing this, keep it commented for the moment.
533 </para>-->
534
535 <!-- https://github.com/alexcrichton/openssl-probe/issues/25 -->
536 <para>
537 <envar>SSL_CERT_DIR=/etc/ssl/certs</envar>: Work around an issue
538 causing test failures with the CA certificate store layout used by
539 <xref linkend='make-ca'/>.
540 </para>
541
542 <para>
543 <parameter>--verbose</parameter>: this switch can sometimes provide more
544 information about a test which fails.
545 </para>
546
547 <para>
548 <parameter>--no-fail-fast</parameter>: this switch ensures that the test suite
549 will not stop at the first error.
550 </para>
551
552 </sect2>
553
554 <sect2 role="configuration">
555 <title>Configuring Rust</title>
556
557 <sect3 id="rustc-config">
558 <title>Configuration Information</title>
559
560 <para>
561 If you installed <application>rustc</application> in
562 <filename class="directory">/opt</filename>, you need to update the
563 following configuration files so that <application>rustc</application>
564 is correctly found by other packages and system processes.
565 </para>
566
567 <para>
568 As the <systemitem class="username">root</systemitem> user, create
569 the <filename>/etc/profile.d/rustc.sh</filename> file:
570 </para>
571
572<screen role="root"><userinput>cat &gt; /etc/profile.d/rustc.sh &lt;&lt; "EOF"
573<literal># Begin /etc/profile.d/rustc.sh
574
575pathprepend /opt/rustc/bin PATH
576
577# Include /opt/rustc/man in the MANPATH variable to access manual pages
578pathappend /opt/rustc/share/man MANPATH
579
580# End /etc/profile.d/rustc.sh</literal>
581EOF</userinput></screen>
582
583 <para>
584 Immediately after installation, update the current PATH
585 for your current shell as a normal user:
586 </para>
587
588<screen><userinput>source /etc/profile.d/rustc.sh</userinput></screen>
589
590 </sect3>
591 </sect2>
592
593
594 <sect2 role="content">
595 <title>Contents</title>
596
597 <segmentedlist>
598 <segtitle>Installed Programs</segtitle>
599 <segtitle>Installed Libraries</segtitle>
600 <segtitle>Installed Directories</segtitle>
601
602 <seglistitem>
603 <seg>
604 cargo-clippy, cargo-fmt, cargo, clippy-driver, rust-gdb,
605 rust-gdbgui, rust-lldb, rustc, rustdoc, and rustfmt
606 </seg>
607 <seg>
608 librustc-driver-&lt;16-byte-hash&gt;.so,
609 libstd-&lt;16-byte-hash&gt;.so, and
610 libtest-&lt;16-byte-hash&gt;.so
611 </seg>
612 <seg>
613 ~/.cargo,
614 /opt/rustc, symbolic link to
615 /opt/rustc-&rust-version;
616 </seg>
617 </seglistitem>
618 </segmentedlist>
619
620 <variablelist>
621 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
622 <?dbfo list-presentation="list"?>
623 <?dbhtml list-presentation="table"?>
624
625 <varlistentry id="cargo-clippy">
626 <term><command>cargo-clippy</command></term>
627 <listitem>
628 <para>
629 provides lint checks for a cargo package
630 </para>
631 <indexterm zone="rust cargo-clippy">
632 <primary sortas="b-cargo-clippy">cargo-clippy</primary>
633 </indexterm>
634 </listitem>
635 </varlistentry>
636
637 <varlistentry id="cargo-fmt">
638 <term><command>cargo-fmt</command></term>
639 <listitem>
640 <para>
641 formats all bin and lib files of the current crate using
642 rustfmt
643 </para>
644 <indexterm zone="rust cargo-fmt">
645 <primary sortas="b-cargo-fmt">cargo-fmt</primary>
646 </indexterm>
647 </listitem>
648 </varlistentry>
649
650<!-- <varlistentry id="cargo-miri">
651 <term><command>cargo-miri</command></term>
652 <listitem>
653 <para>
654 is for use by Miri to interpret bin crates and tests. It is
655 not installed by default.
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 not installed by default.
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-demangler">
728 <term><command>rust-demangler</command></term>
729 <listitem>
730 <para>
731 converts a list of Rust mangled symbols into a
732 corresponding list of demangled symbols
733 </para>
734 <indexterm zone="rust rust-demangler">
735 <primary sortas="b-rust-demangler">rust-demangler</primary>
736 </indexterm>
737 </listitem>
738 </varlistentry> -->
739
740 <varlistentry id="rust-gdb">
741 <term><command>rust-gdb</command></term>
742 <listitem>
743 <para>
744 is a wrapper script for gdb, pulling in Python pretty-printing
745 modules installed in
746 <filename class="directory">/opt/rustc-&rust-version;/lib/rustlib/etc</filename>
747 </para>
748 <indexterm zone="rust rust-gdb">
749 <primary sortas="b-rust-gdb">rust-gdb</primary>
750 </indexterm>
751 </listitem>
752 </varlistentry>
753
754 <varlistentry id="rust-gdbgui">
755 <term><command>rust-gdbgui</command></term>
756 <listitem>
757 <para>
758 is a wrapper script for a graphical front end to gdb that runs in a
759 browser
760 </para>
761 <indexterm zone="rust rust-gdbgui">
762 <primary sortas="b-rust-gdbgui">rust-gdbgui</primary>
763 </indexterm>
764 </listitem>
765 </varlistentry>
766
767 <varlistentry id="rust-lldb">
768 <term><command>rust-lldb</command></term>
769 <listitem>
770 <para>
771 is a wrapper script for LLDB (the LLVM debugger)
772 pulling in the Python pretty-printing modules
773 </para>
774 <indexterm zone="rust rust-lldb">
775 <primary sortas="b-rust-lldb">rust=lldb</primary>
776 </indexterm>
777 </listitem>
778 </varlistentry>
779
780 <varlistentry id="rustc">
781 <term><command>rustc</command></term>
782 <listitem>
783 <para>
784 is the rust compiler
785 </para>
786 <indexterm zone="rust rustc">
787 <primary sortas="b-rustc">rustc</primary>
788 </indexterm>
789 </listitem>
790 </varlistentry>
791
792 <varlistentry id="rustdoc">
793 <term><command>rustdoc</command></term>
794 <listitem>
795 <para>
796 generates documentation from rust source code
797 </para>
798 <indexterm zone="rust rustdoc">
799 <primary sortas="b-rustdoc">rustdoc</primary>
800 </indexterm>
801 </listitem>
802 </varlistentry>
803
804 <varlistentry id="rustfmt">
805 <term><command>rustfmt</command></term>
806 <listitem>
807 <para>
808 formats rust code
809 </para>
810 <indexterm zone="rust rustfmt">
811 <primary sortas="b-rustfmt">rustfmt</primary>
812 </indexterm>
813 </listitem>
814 </varlistentry>
815
816 <varlistentry id="libstd">
817 <term><filename class="libraryfile">libstd-&lt;16-byte-hash&gt;.so</filename></term>
818 <listitem>
819 <para>
820 is the Rust Standard Library, the foundation of portable Rust software
821 </para>
822 <indexterm zone="rust libstd">
823 <primary sortas="c-libstd">libstd-&lt;16-byte-hash&gt;.so</primary>
824 </indexterm>
825 </listitem>
826 </varlistentry>
827 </variablelist>
828 </sect2>
829
830</sect1>
Note: See TracBrowser for help on using the repository browser.