source: general/prog/rust.xml@ bf5fb94

10.1 11.0 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 bf5fb94 was bf5fb94, checked in by Ken Moffat <ken@…>, 3 years ago

Update to llvm-11.0.0 and rustc-1.47.0.

Patch firefox and thunderbird for this version of rust.
Remeasure all packages which use rust -
I think I used an out of date mozconfig when I updated thunderbird.
In general, builds are slower and slightly larger, but installs are marginally smaller.

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

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