source: general/prog/rust.xml@ e7c8506a

11.1 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 upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since e7c8506a was e7c8506a, checked in by Ken Moffat <ken@…>, 2 years ago

Update to rustc-1.56.1 and fixit for openssl-3 :

Use a sed to ensure fixed versions of the curl and curl-sys crates
are downloaded.

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