source: general/prog/rust.xml@ 8558044

11.1 11.2 11.3 12.0 12.1 12.2 gimp3 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/for-12.3 xry111/intltool xry111/llvm18 xry111/soup3 xry111/spidermonkey128 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 8558044 was 8558044, checked in by Pierre Labastie <pierre.labastie@…>, 3 years ago

Remove spaces at the end of lines

I know it is somewhat useless, but I don't like them for
two reasons: first they cannot be seen, and I do not like things I
cannot see. Second, git highlights them, and this is disturbing...

  • Property mode set to 100644
File size: 27.4 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 "bd6fbe9ba5fe457d2514e92a6ccd7b24">
10 <!ENTITY rust-size "161 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 "9.3 GB (407 MB installed) including 291 MB of ~/.cargo files for the user building this. Add 4.0 GB including extra 179 MB of ~/.cargo files if running the tests">
18 <!ENTITY rust-time "31 SBU (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, or for the
86 reverse situation) it is possible for the install to leave a broken
87 <command>cargo</command> program. In such a situation, either remove
88 the existing installation first, or use a different prefix such as
89 /opt/rustc-&rust-version;-build2.
90 </para>
91
92 <para>
93 If you prefer, you can of course change the prefix to <filename
94 class="directory">/usr</filename> and omit the
95 <command>ldconfig</command> and the actions to add rustc to the PATH.
96 </para>
97 </note>
98
99 <para>
100 The current <application>rustbuild</application> build-system will use
101 all processors, although it does not scale well and often falls
102 back to just using one core while waiting for a library to compile.
103 However it can be mostly limited to a specified number of processors by
104 a combination of adding the switch <literal>--jobs &lt;N&gt;</literal>
105 (e.g. '--jobs 4' to limit to 4 processors) on each invocation of
106 <command>python3 ./x.py</command> <emphasis>and</emphasis> using an
107 environment variable <envar>CARGO_BUILD_JOBS=&lt;N&gt;</envar>. At the
108 moment this is not effective when some of the rustc tests are run.
109 </para>
110
111 <para>
112 The current version of rust's num_cpus crate now recognizes that cgroups
113 can be used to restrict which processors it is allowed to use. So if your
114 machine lacks DRAM (typically, less than 2GB DRAM per core) that might be
115 an alternative to taking CPUs offline.
116 <phrase revision="sysv">In sysv systems cgroups requires <ulink
117 url="https://sourceforge.net/projects/libcg/">libcgroup</ulink>.</phrase>
118 <phrase revision="systemd">That can apparently be achieved by writing
119 custom unit files.</phrase>
120 </para>
121
122 <para>
123 At the moment <application>Rust</application> does not provide any
124 guarantees of a stable ABI.
125 </para>
126
127 <note>
128 <para>
129 Rustc defaults to building for ALL supported architectures, using a
130 shipped copy of LLVM. In BLFS the build is only for the X86
131 architecture.
132 If you intend to develop rust crates, this build may not be good
133 enough for your purposes.
134 </para>
135 <para>
136 The build times of this version when repeated on the same machine are
137 often reasonably consistent, but as with all compilations using
138 <command>rustc</command> there can be some very slow outliers.
139 </para>
140 <para>
141 Unusually, a DESTDIR-style method is being used to install this package.
142 This is because running the install as root not only downloads all of the
143 cargo files again (to <filename>/root/.cargo</filename>), it then spends
144 a very long time recompiling. Using this method saves a lot of time, at
145 the cost of extra disk space.
146 </para>
147 </note>
148
149 &lfs110a_checked;
150
151 <bridgehead renderas="sect3">Package Information</bridgehead>
152 <itemizedlist spacing="compact">
153 <listitem>
154 <para>
155 Download (HTTP): <ulink url="&rust-download-http;"/>
156 </para>
157 </listitem>
158 <listitem>
159 <para>
160 Download (FTP): <ulink url="&rust-download-ftp;"/>
161 </para>
162 </listitem>
163 <listitem>
164 <para>
165 Download MD5 sum: &rust-md5sum;
166 </para>
167 </listitem>
168 <listitem>
169 <para>
170 Download size: &rust-size;
171 </para>
172 </listitem>
173 <listitem>
174 <para>
175 Estimated disk space required: &rust-buildsize;
176 </para>
177 </listitem>
178 <listitem>
179 <para>
180 Estimated build time: &rust-time;
181 </para>
182 </listitem>
183 </itemizedlist>
184
185<!--<bridgehead renderas="sect3">Additional Downloads</bridgehead>
186 <itemizedlist spacing="compact">
187 <listitem>
188 <para>
189 Required patch:
190 <ulink url="&patch-root;/rustc-&rust-version;-llvm9_fixes-1.patch"/>
191 </para>
192 </listitem>
193 </itemizedlist>-->
194
195 <bridgehead renderas="sect3">Rust Dependencies</bridgehead>
196
197 <bridgehead renderas="sect4">Required</bridgehead>
198 <para role="required">
199 <xref linkend="curl"/>,
200 <xref linkend="cmake"/>, and
201 <xref linkend="libssh2"/>
202 </para>
203
204 <bridgehead renderas="sect4">Recommended</bridgehead>
205 <para role="recommended">
206 <package>clang</package> from <xref linkend="llvm"/>
207 (built with -DLLVM_LINK_LLVM_DYLIB=ON so that rust can link to
208 system LLVM instead of building its shipped version)
209 If using an older version, see the config.toml file below re
210 using the shipped llvm, because of rust issue 69225.
211 </para>
212
213 <bridgehead renderas="sect4">Optional</bridgehead>
214 <para role="optional">
215 <xref linkend="gdb"/> (used by the testsuite if it is present)
216 </para>
217
218 <para condition="html" role="usernotes">
219 User Notes: <ulink url="&blfs-wiki;/rust"/>
220 </para>
221 </sect2>
222
223 <sect2 role="installation">
224 <title>Installation of Rust</title>
225
226 <para>
227 To install into the
228 <filename class="directory">/opt</filename> directory, remove the symlink
229 and create a new directory (i.e. with a different name if trying a
230 modified build).
231 As the <systemitem class="username">root</systemitem>
232 user:
233 </para>
234
235<screen role="root"><userinput>mkdir /opt/rustc-&rust-version; &amp;&amp;
236ln -svfin rustc-&rust-version; /opt/rustc</userinput></screen>
237
238 <note>
239 <para>
240 If multiple versions of <application>Rust</application> are installed
241 in <filename class="directory">/opt</filename>, changing to another
242 version only requires changing the <filename> /opt/rustc</filename>
243 symbolic link and then running <command>ldconfig</command>.
244 </para>
245 </note>
246
247 <para>
248 Create a suitable <filename>config.toml</filename> file which will
249 configure the build.
250 </para>
251
252<screen><userinput>cat &lt;&lt; EOF &gt; config.toml
253<literal># see config.toml.example for more possible options
254# See the 8.4 book for an example using shipped LLVM
255# e.g. if not installing clang, or using a version before 10.0
256[llvm]
257# by default, rust will build for a myriad of architectures
258targets = "X86"
259
260# When using system llvm prefer shared libraries
261link-shared = true
262
263[build]
264# omit docs to save time and space (default is to build them)
265docs = false
266
267# install cargo as well as rust
268extended = true
269
270[install]
271prefix = "/opt/rustc-&rust-version;"
272docdir = "share/doc/rustc-&rust-version;"
273
274[rust]
275channel = "stable"
276rpath = false
277
278# BLFS does not install the FileCheck executable from llvm,
279# so disable codegen tests
280codegen-tests = false
281
282[target.x86_64-unknown-linux-gnu]
283# NB the output of llvm-config (i.e. help options) may be
284# dumped to the screen when config.toml is parsed.
285llvm-config = "/usr/bin/llvm-config"
286
287[target.i686-unknown-linux-gnu]
288# NB the output of llvm-config (i.e. help options) may be
289# dumped to the screen when config.toml is parsed.
290llvm-config = "/usr/bin/llvm-config"
291
292</literal>
293EOF</userinput></screen>
294
295<!--<para>
296 Adapt rustc to allow it to build and function with the changes in LLVM-9:
297 </para>
298
299<screen><userinput remap="pre">patch -Np1 -i ../rustc-&rust-version;-llvm9_fixes-1.patch</userinput></screen>-->
300
301 <para>
302 Compile <application>Rust</application> by running the following
303 commands:
304 </para>
305
306<screen><userinput>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" &amp;&amp;
307python3 ./x.py build --exclude src/tools/miri</userinput></screen>
308
309 <note>
310 <para>
311 The testsuite will generate some messages in the
312 <phrase revision="sysv">system log</phrase>
313 <phrase revision="systemd">systemd journal</phrase>
314 for traps on invalid opcodes, and for segmentation faults.
315 In themselves these are nothing to worry about, just a way for the
316 test to be terminated.
317 </para>
318 </note>
319
320 <para>
321 To run the tests issue <command>python3 ./x.py test --verbose
322 --no-fail-fast | tee rustc-testlog</command>: as with the build, that
323 will use all available CPUs.
324 </para>
325
326 <para>
327 At a minimum, seven tests will fail: ui/asm/inline-syntax.rs#arm,
328 assembly/target-feature-multiple.rs#SINGLEFLAG,
329 assembly/target-feature-multiple.rs#TWOFLAGS,
330 run-make-fulldeps/long-linker-command-lines, run-make-fulldeps/split-debuginfo,
331 run-make-fulldeps/split-dwarf, run-make-fulldeps/sysroot-crates-are-unstable.
332 With any recent version of <command>gdb</command>, four more failures
333 (debuginfo/extern-c-fn.rs, debuginfo/generator-objects.rs,
334 debuginfo/issue-57822.rs, debuginfo/pretty-huge-vec.rs) can be expected.
335 </para>
336
337 <para>
338 As with all large testsuites, other tests might fail on some machines -
339 if the number of additional failures is in the single digits,
340 check the log for 'FAILED' and review lines above that, particularly the
341 'stderr:' lines. Any mention of
342 SIGSEGV or signal 11 in a failing test is a cause for concern.
343 </para>
344
345 <para>
346 If you get any <emphasis>other</emphasis> failing test which reports an
347 issue number then you should search for that issue. For example, when
348 rustc &gt;= 1.41.1 was built with a version of sysllvm before 10.0 the test
349 for issue 69225 failed <ulink
350 url="https://github.com/rust-lang/rust/issues/69225"/> and that should be
351 regarded as a critical failure (they released 1.41.1 because of it).
352 Most other failures will not be critical.
353 </para>
354
355 <para>
356 Therefore, you should determine the number of failures.
357 </para>
358
359<!--
360 The total number
361 of tests varies depending on which dependencies are present, e.g. more
362 will be run if <command>gdb</command> is available. If you wish, the
363 total number which were considered can be found if you run:
364 </para>
365
366<screen remap="test"><userinput>egrep 'running [[:digit:]]+ test' rustc-testlog | awk '{ sum += $2 } END { print sum }'</userinput></screen>-->
367
368 <para>
369 The number of tests which failed can be found by running:
370 </para>
371
372<screen remap="test"><userinput>grep '^test result:' rustc-testlog | awk '{ sum += $6 } END { print sum }'</userinput></screen>
373
374 <para>
375 And similarly if you care about how many tests passed use $4, for those
376 which were ignored (i.e. skipped) use $8 (and $10 for 'measured', $12 for
377 'filtered out' but both are probably zero).
378 </para>
379
380 <para>
381 Still as your normal user, do a DESTDIR install:
382 </para>
383
384<screen><userinput>export LIBSSH2_SYS_USE_PKG_CONFIG=1 &amp;&amp;
385DESTDIR=${PWD}/install python3 ./x.py install &amp;&amp;
386unset LIBSSH2_SYS_USE_PKG_CONFIG</userinput></screen>
387
388 <para>
389 Now, as the <systemitem class="username">root</systemitem> user
390 install the files from the DESTDIR:
391 </para>
392
393<screen role="root"><userinput>chown -R root:root install &amp;&amp;
394cp -a install/* /</userinput></screen>
395
396 </sect2>
397
398 <sect2 role="commands">
399 <title>Command Explanations</title>
400
401 <para>
402 <command>ln -svfn rustc-&rust-version; /opt/rustc</command>: if this is
403 not the first use of the <filename class="directory">/opt/rustc</filename>
404 symlink, overwrite it by forcing, and use the '-n' flag to avoid getting
405 confusing results from e.g. <command>ls -l</command>.
406 </para>
407
408 <para>
409 <command>targets = "X86"</command>: this avoids building all the available
410 linux cross-compilers (Aarch64, MIPS, PowerPC, SystemZ, etc). Unfortunately,
411 rust insists on installing source files for these below
412 <filename class="directory">/opt/rustc/lib/src</filename>.
413 </para>
414
415 <para>
416 <command>extended = true</command>: this installs Cargo alongside Rust.
417 </para>
418
419 <para>
420 <command>channel = "stable"</command>: this ensures only stable features
421 can be used, the default in <filename>config.toml</filename> is to use
422 development features, which is not appropriate for a released version.
423 </para>
424
425 <para>
426 <command>rpath = false</command>: by default, <command>rust</command> can
427 be run from where it was built, without being installed. That adds DT_RPATH
428 entries to all of the ELF files, which produces very messy output from
429 <command>ldd</command>, showing the libraries in the place they were built,
430 even if they have been deleted from there after the install.
431 </para>
432
433 <!-- comment while using shipped LLVM -->
434 <para>
435 <command>[target.x86_64-unknown-linux-gnu]</command>: the syntax of
436 <filename>config.toml</filename> requires an <literal>llvm-config</literal>
437 entry for each target for which system-llvm is to be used. Change the target
438 to <literal>[target.i686-unknown-linux-gnu]</literal> if you are building
439 on 32-bit x86. This whole section may be omitted if you wish to build
440 against the shipped llvm, or do not have clang, but the resulting build will
441 be larger and take longer.
442 </para>
443
444 <para>
445 <command>export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"</command>:
446 This adds a link to libffi to any RUSTFLAGS you may already be passing
447 to the build. On some systems, linking fails to include libffi unless
448 this is used. The reason why this is needed is not clear.
449 </para>
450
451 <para>
452 <command>--exclude src/tools/miri</command>: For a long time, the miri
453 crate (an interpreter for the Midlevel Intermediate Representation)
454 has failed to build on releases. It is optional, but the failure
455 messages can persuade people that the whole build failed. However,
456 although it is not built in the main compile, with rustc-1.35.0 it
457 now got compiled during the install, but it was broken in that version.
458 <!-- might be unbroken in 1.36.0, if so remove broken from description
459 of miri below. https://github.com/rust-lang/rust/issues/61830 -->
460 Omitting it should save a little time.
461 </para>
462
463 <para>
464 <command>--verbose</command>: this switch can sometimes provide more
465 information about a test which fails.
466 </para>
467
468 <para>
469 <command>--no-fail-fast</command>: this switch ensures that the testsuite
470 will not stop at the first error.
471 </para>
472
473 <para>
474 <command>export LIBSSH2_SYS_USE_PKG_CONFIG=1</command>: On some systems,
475 cairo fails to link during the install because it cannot find libssh2.
476 This seems to fix it, but again the reason why the problem occurs is not
477 understood.
478 </para>
479
480 <para>
481 <command>DESTDIR=${PWD}/install python3 ./x.py install</command>: This
482 effects a DESTDIR-style install in the source tree,creating an <filename
483 class="directory">install</filename> directory. Note that DESTDIR installs
484 need an absolute path, passing 'install' will not work.
485 </para>
486
487 <para>
488 <command>chown -R root:root install</command>: the DESTDIR install
489 was run by a regular user, who owns the files. For security, change their
490 owner before doing a simple copy to install them.
491 </para>
492
493 </sect2>
494
495 <sect2 role="configuration">
496 <title>Configuring Rust</title>
497
498 <sect3 id="rustc-config">
499 <title>Configuration Information</title>
500
501 <para>
502 If you installed <application>rustc</application> in
503 <filename class="directory">/opt</filename>, you need to update the
504 following configuration files so that <application>rustc</application>
505 is correctly found by other packages and system processes.
506 </para>
507
508 <para>
509 As the <systemitem class="username">root</systemitem> user, update
510 the <filename>/etc/ld.so.conf</filename> file and the dynamic linker's
511 run-time cache file:
512 </para>
513
514<screen role="root"><userinput>cat &gt;&gt; /etc/ld.so.conf &lt;&lt; EOF
515<literal># Begin rustc addition
516
517/opt/rustc/lib
518
519# End rustc addition</literal>
520EOF
521
522ldconfig</userinput></screen>
523
524 <indexterm zone="rust rustc-config">
525 <primary sortas="e-etc-ld.so.conf">/etc/ld.so.conf</primary>
526 </indexterm>
527
528 <para>
529 As the <systemitem class="username">root</systemitem> user, create
530 the <filename>/etc/profile.d/rustc.sh</filename> file:
531 </para>
532
533<screen role="root"><userinput>cat &gt; /etc/profile.d/rustc.sh &lt;&lt; "EOF"
534<literal># Begin /etc/profile.d/rustc.sh
535
536pathprepend /opt/rustc/bin PATH
537
538# End /etc/profile.d/rustc.sh</literal>
539EOF</userinput></screen>
540
541 <para>
542 Immediately after installation, update the current PATH
543 for your current shell as a normal user:
544 </para>
545
546<screen><userinput>source /etc/profile.d/rustc.sh</userinput></screen>
547
548 </sect3>
549 </sect2>
550
551
552 <sect2 role="content">
553 <title>Contents</title>
554
555 <segmentedlist>
556 <segtitle>Installed Programs</segtitle>
557 <segtitle>Installed Libraries</segtitle>
558 <segtitle>Installed Directories</segtitle>
559
560 <seglistitem>
561 <seg>
562 cargo-clippy, cargo-fmt, cargo-miri, cargo, clippy-driver, miri,
563 rls, rust-analyzer, rust-gdb, rust-gdbgui, rust-lldb, rustc,
564 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-analyzer">
674 <term><command>rust-analyzer</command></term>
675 <listitem>
676 <para>
677 is an implementation of Language Server Protocol for the Rust
678 programming language.
679 </para>
680 <indexterm zone="rust rust-analyzer">
681 <primary sortas="b-rust-analyzer">rust-analyzer</primary>
682 </indexterm>
683 </listitem>
684 </varlistentry>
685
686 <varlistentry id="rust-gdb">
687 <term><command>rust-gdb</command></term>
688 <listitem>
689 <para>
690 is a wrapper script for gdb, pulling in Python pretty-printing
691 modules installed in
692 <filename class="directory">/opt/rustc-&rust-version;/lib/rustlib/etc</filename>
693 </para>
694 <indexterm zone="rust rust-gdb">
695 <primary sortas="b-rust-gdb">rust-gdb</primary>
696 </indexterm>
697 </listitem>
698 </varlistentry>
699
700 <varlistentry id="rust-gdbgui">
701 <term><command>rust-gdbgui</command></term>
702 <listitem>
703 <para>
704 is a wrapper script for a graphical front end to gdb that runs in a
705 browser
706 </para>
707 <indexterm zone="rust rust-gdbgui">
708 <primary sortas="b-rust-gdbgui">rust-gdbgui</primary>
709 </indexterm>
710 </listitem>
711 </varlistentry>
712
713 <varlistentry id="rust-lldb">
714 <term><command>rust-lldb</command></term>
715 <listitem>
716 <para>
717 is a wrapper script for LLDB (the LLVM debugger)
718 pulling in the Python pretty-printing modules
719 </para>
720 <indexterm zone="rust rust-lldb">
721 <primary sortas="b-rust-lldb">rust=lldb</primary>
722 </indexterm>
723 </listitem>
724 </varlistentry>
725
726 <varlistentry id="rustc">
727 <term><command>rustc</command></term>
728 <listitem>
729 <para>
730 is the rust compiler
731 </para>
732 <indexterm zone="rust rustc">
733 <primary sortas="b-rustc">rustc</primary>
734 </indexterm>
735 </listitem>
736 </varlistentry>
737
738 <varlistentry id="rustdoc">
739 <term><command>rustdoc</command></term>
740 <listitem>
741 <para>
742 generates documentation from rust source code
743 </para>
744 <indexterm zone="rust rustdoc">
745 <primary sortas="b-rustdoc">rustdoc</primary>
746 </indexterm>
747 </listitem>
748 </varlistentry>
749
750 <varlistentry id="rustfmt">
751 <term><command>rustfmt</command></term>
752 <listitem>
753 <para>
754 formats rust code
755 </para>
756 <indexterm zone="rust rustfmt">
757 <primary sortas="b-rustfmt">rustfmt</primary>
758 </indexterm>
759 </listitem>
760 </varlistentry>
761
762 <varlistentry id="libstd">
763 <term><filename class="libraryfile">libstd-&lt;16-byte-hash&gt;.so</filename></term>
764 <listitem>
765 <para>
766 is the Rust Standard Library, the foundation of portable Rust software
767 </para>
768 <indexterm zone="rust libstd">
769 <primary sortas="c-libstd">libstd-&lt;16-byte-hash&gt;.so</primary>
770 </indexterm>
771 </listitem>
772 </varlistentry>
773 </variablelist>
774 </sect2>
775
776</sect1>
Note: See TracBrowser for help on using the repository browser.