##// END OF EJS Templates
docs: add documentation about Rust...
Raphaël Gomès -
r49364:7ccd31fd stable
parent child Browse files
Show More
@@ -0,0 +1,94 b''
1 Mercurial can be augmented with Rust extensions for speeding up certain
2 operations.
3
4 Compatibility
5 =============
6
7 Though the Rust extensions are only tested by the project under Linux, users of
8 MacOS, FreeBSD and other UNIX-likes have been using the Rust extensions. Your
9 mileage may vary, but by all means do give us feedback or signal your interest
10 for better support.
11
12 No Rust extensions are available for Windows at this time.
13
14 Features
15 ========
16
17 The following operations are sped up when using Rust:
18 - discovery of differences between repositories (pull/push)
19 - nodemap (see :hg:`help config.format.use-persistent-nodemap`)
20 - all commands using the dirstate (status, commit, diff, add, update, etc.)
21 - dirstate-v2 (see :hg:`help config.format.exp-rc-dirstate-v2`)
22 - iteration over ancestors in a graph
23
24 More features are in the works, and improvements on the above listed are still
25 in progress. For more experimental work see the "rhg" section.
26
27 Checking for Rust
28 =================
29
30 You may already have the Rust extensions depending on how you install Mercurial.
31
32 $ hg debuginstall | grep -i rust
33 checking Rust extensions (installed)
34 checking module policy (rust+c-allow)
35
36 If those lines don't even exist, you're using an old version of `hg` which does
37 not have any Rust extensions yet.
38
39 Installing
40 ==========
41
42 You will need `cargo` to be in your `$PATH`. See the "MSRV" section for which
43 version to use.
44
45 Using pip
46 ---------
47
48 Users of `pip` can install the Rust extensions with the following command:
49
50 $ pip install mercurial --global-option --rust --no-use-pep517
51
52 `--no-use-pep517` is here to tell `pip` to preserve backwards compatibility with
53 the legacy `setup.py` system. Mercurial has not yet migrated its complex setup
54 to the new system, so we still need this to add compiled extensions.
55
56 This might take a couple of minutes because you're compiling everything.
57
58 See the "Checking for Rust" section to see if the install succeeded.
59
60 From your distribution
61 ----------------------
62
63 Some distributions are shipping Mercurial with Rust extensions enabled and
64 pre-compiled (meaning you won't have to install `cargo`), or allow you to
65 specify an install flag. Check with your specific distribution for how to do
66 that, or ask their team to add support for hg+Rust!
67
68 From source
69 -----------
70
71 Please refer to the `rust/README.rst` file in the Mercurial repository for
72 instructions on how to install from source.
73
74 MSRV
75 ====
76
77 The minimum supported Rust version is currently 1.48.0. The project's policy is
78 to follow the version from Debian stable, to make the distributions' job easier.
79
80 rhg
81 ===
82
83 There exists an experimental pure-Rust version of Mercurial called `rhg` with a
84 fallback mechanism for unsupported invocations. It allows for much faster
85 execution of certain commands while adding no discernable overhead for the rest.
86
87 The only way of trying it out is by building it from source. Please refer to
88 `rust/README.rst` in the Mercurial repository.
89
90 Contributing
91 ============
92
93 If you would like to help the Rust endeavor, please refer to `rust/README.rst`
94 in the Mercurial repository.
@@ -484,6 +484,15 b' helptable = sorted('
484 484 TOPIC_CATEGORY_IDS,
485 485 ),
486 486 (
487 [
488 b'rust',
489 b'rustext',
490 ],
491 _(b'Rust in Mercurial'),
492 loaddoc(b'rust'),
493 TOPIC_CATEGORY_CONFIG,
494 ),
495 (
487 496 [b'filesets', b'fileset'],
488 497 _(b"Specifying File Sets"),
489 498 loaddoc(b'filesets'),
@@ -414,6 +414,7 b' Testing -h/--help:'
414 414 hgweb Configuring hgweb
415 415 merge-tools Merge Tools
416 416 pager Pager Support
417 rust Rust in Mercurial
417 418
418 419 Concepts:
419 420
@@ -548,6 +549,7 b' Testing -h/--help:'
548 549 hgweb Configuring hgweb
549 550 merge-tools Merge Tools
550 551 pager Pager Support
552 rust Rust in Mercurial
551 553
552 554 Concepts:
553 555
@@ -113,6 +113,7 b' Test hiding some commands (which also ha'
113 113 hgweb Configuring hgweb
114 114 merge-tools Merge Tools
115 115 pager Pager Support
116 rust Rust in Mercurial
116 117
117 118 Concepts:
118 119
@@ -251,6 +252,7 b' Test hiding some topics.'
251 252 hgweb Configuring hgweb
252 253 merge-tools Merge Tools
253 254 pager Pager Support
255 rust Rust in Mercurial
254 256
255 257 Concepts:
256 258
@@ -165,6 +165,7 b' the extension is unknown.'
165 165 hgweb Configuring hgweb
166 166 merge-tools Merge Tools
167 167 pager Pager Support
168 rust Rust in Mercurial
168 169
169 170 Concepts:
170 171
@@ -295,6 +296,7 b' the extension is unknown.'
295 296 hgweb Configuring hgweb
296 297 merge-tools Merge Tools
297 298 pager Pager Support
299 rust Rust in Mercurial
298 300
299 301 Concepts:
300 302
@@ -1583,6 +1585,8 b' Separate sections from subsections'
1583 1585
1584 1586 "usefncache"
1585 1587
1588 "exp-rc-dirstate-v2"
1589
1586 1590 "use-persistent-nodemap"
1587 1591
1588 1592 "use-share-safe"
@@ -2413,6 +2417,13 b' Dish up an empty repo; serve it cold.'
2413 2417 Specifying Revisions
2414 2418 </td></tr>
2415 2419 <tr><td>
2420 <a href="/help/rust">
2421 rust
2422 </a>
2423 </td><td>
2424 Rust in Mercurial
2425 </td></tr>
2426 <tr><td>
2416 2427 <a href="/help/scripting">
2417 2428 scripting
2418 2429 </a>
@@ -2324,6 +2324,10 b' help/ shows help topics'
2324 2324 "topic": "revisions"
2325 2325 },
2326 2326 {
2327 "summary": "Rust in Mercurial",
2328 "topic": "rust"
2329 },
2330 {
2327 2331 "summary": "Using Mercurial from scripts and automation",
2328 2332 "topic": "scripting"
2329 2333 },
General Comments 0
You need to be logged in to leave comments. Login now