source: general/prog/rust.xml@ 5ce1bdb

10.0 10.1 11.0 ken/refactor-virt lazarus qt5new trunk xry111/git-date xry111/git-date-for-trunk xry111/git-date-test
Last change on this file since 5ce1bdb was 5ce1bdb, checked in by Ken Moffat <ken@…>, 16 months ago

Rust: explain how to (mostly) restrict how many processors it wants to use.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@23349 af4574ff-66df-0310-9fd7-8a98e5e911e0

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