Contents
Mercurial can be augmented with Rust extensions for speeding up certain operations.
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.
The following operations are sped up when using Rust:
- 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.use-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.
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.
You will need cargo to be in your $PATH. See the "MSRV" section for which version to use.
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.
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!
Please refer to the rust/README.rst file in the Mercurial repository for instructions on how to install from source.
The minimum supported Rust version is defined in rust/clippy.toml. The project's policy is to keep it at or below the version from Debian testing, to make the distributions' job easier.
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.
See hg help config.rhg for configuration options.
If you would like to help the Rust endeavor, please refer to rust/README.rst in the Mercurial repository.