rust.txt
95 lines
| 3.1 KiB
| text/plain
|
TextLexer
|
r49364 | Mercurial can be augmented with Rust extensions for speeding up certain | ||
operations. | ||||
Compatibility | ||||
============= | ||||
Though the Rust extensions are only tested by the project under Linux, users of | ||||
MacOS, FreeBSD and other UNIX-likes have been using the Rust extensions. Your | ||||
mileage may vary, but by all means do give us feedback or signal your interest | ||||
for better support. | ||||
No Rust extensions are available for Windows at this time. | ||||
Features | ||||
======== | ||||
The following operations are sped up when using Rust: | ||||
|
r49520 | |||
|
r49364 | - discovery of differences between repositories (pull/push) | ||
- nodemap (see :hg:`help config.format.use-persistent-nodemap`) | ||||
- all commands using the dirstate (status, commit, diff, add, update, etc.) | ||||
- dirstate-v2 (see :hg:`help config.format.exp-rc-dirstate-v2`) | ||||
- iteration over ancestors in a graph | ||||
More features are in the works, and improvements on the above listed are still | ||||
in progress. For more experimental work see the "rhg" section. | ||||
Checking for Rust | ||||
================= | ||||
You may already have the Rust extensions depending on how you install Mercurial. | ||||
$ hg debuginstall | grep -i rust | ||||
checking Rust extensions (installed) | ||||
checking module policy (rust+c-allow) | ||||
If those lines don't even exist, you're using an old version of `hg` which does | ||||
not have any Rust extensions yet. | ||||
Installing | ||||
========== | ||||
You will need `cargo` to be in your `$PATH`. See the "MSRV" section for which | ||||
version to use. | ||||
Using pip | ||||
--------- | ||||
Users of `pip` can install the Rust extensions with the following command: | ||||
$ pip install mercurial --global-option --rust --no-use-pep517 | ||||
`--no-use-pep517` is here to tell `pip` to preserve backwards compatibility with | ||||
the legacy `setup.py` system. Mercurial has not yet migrated its complex setup | ||||
to the new system, so we still need this to add compiled extensions. | ||||
This might take a couple of minutes because you're compiling everything. | ||||
See the "Checking for Rust" section to see if the install succeeded. | ||||
From your distribution | ||||
---------------------- | ||||
Some distributions are shipping Mercurial with Rust extensions enabled and | ||||
pre-compiled (meaning you won't have to install `cargo`), or allow you to | ||||
specify an install flag. Check with your specific distribution for how to do | ||||
that, or ask their team to add support for hg+Rust! | ||||
From source | ||||
----------- | ||||
Please refer to the `rust/README.rst` file in the Mercurial repository for | ||||
instructions on how to install from source. | ||||
MSRV | ||||
==== | ||||
The minimum supported Rust version is currently 1.48.0. The project's policy is | ||||
to follow the version from Debian stable, to make the distributions' job easier. | ||||
rhg | ||||
=== | ||||
There exists an experimental pure-Rust version of Mercurial called `rhg` with a | ||||
fallback mechanism for unsupported invocations. It allows for much faster | ||||
execution of certain commands while adding no discernable overhead for the rest. | ||||
The only way of trying it out is by building it from source. Please refer to | ||||
`rust/README.rst` in the Mercurial repository. | ||||
Contributing | ||||
============ | ||||
If you would like to help the Rust endeavor, please refer to `rust/README.rst` | ||||
in the Mercurial repository. | ||||