Skip to content
Snippets Groups Projects
user avatar
Raphaël Gomès authored
This will save us a lot of calling back into Python, which is always
horribly expensive.

We are now faster in all benchmarked cases except for `log --patch`
specifically on mozilla-try. Fixing this will happen in a later patch.

```
### data-env-vars.name            = mercurial-devel-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.cat
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.files      = all-root
  # benchmark.variants.output     = plain
  # benchmark.variants.rev        = tip
e679697a6ca4: 1.760765  ~~~~~
3fa1a4da4536: 1.555513  (-11.66%, -0.21)
### data-env-vars.name            = mozilla-try-2024-03-26-ds2-pnm
  # benchmark.name                = hg.command.cat
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.files      = all-root
  # benchmark.variants.output     = plain
  # benchmark.variants.rev        = tip
e679697a6ca4: 62.848869  ~~~~~
3fa1a4da4536: 58.113051   (-7.54%, -4.74)
### data-env-vars.name            = mozilla-try-2024-03-26-ds2-pnm
  # benchmark.name                = hg.command.log
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.limit-rev  = 10
  # benchmark.variants.patch      = yes
  # benchmark.variants.rev        = none
e679697a6ca4: 3.173532  ~~~~~
3fa1a4da4536: 3.543591  (+11.66%, +0.37)
### data-env-vars.name            = mozilla-try-2024-03-26-ds2-pnm
  # benchmark.name                = hg.command.log
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.limit-rev  = 1000
  # benchmark.variants.patch      = no
  # benchmark.variants.rev        = none
e679697a6ca4: 1.214698  ~~~~~
3fa1a4da4536: 1.192478   (-1.83%, -0.02)
### data-env-vars.name            = mozilla-unified-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.cat
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.files      = all-root
  # benchmark.variants.output     = plain
  # benchmark.variants.rev        = tip
e679697a6ca4: 56.205474  ~~~~~
3fa1a4da4536: 51.520074   (-8.34%, -4.69)
### data-env-vars.name            = mozilla-unified-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.log
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.limit-rev  = 10
  # benchmark.variants.patch      = yes
  # benchmark.variants.rev        = none
e679697a6ca4: 2.105419  ~~~~~
3fa1a4da4536: 2.051849   (-2.54%, -0.05)
### data-env-vars.name            = mozilla-unified-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.log
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.limit-rev  = 1000
  # benchmark.variants.patch      = no
  # benchmark.variants.rev        = none
e679697a6ca4: 0.309960  ~~~~~
3fa1a4da4536: 0.299035   (-3.52%, -0.01)
### data-env-vars.name            = tryton-public-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.cat
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.files      = all-root
  # benchmark.variants.output     = plain
  # benchmark.variants.rev        = tip
e679697a6ca4: 1.849832  ~~~~~
3fa1a4da4536: 1.805076   (-2.42%, -0.04)
### data-env-vars.name            = tryton-public-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.log
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.limit-rev  = 10
  # benchmark.variants.patch      = yes
  # benchmark.variants.rev        = none
e679697a6ca4: 0.289521  ~~~~~
3fa1a4da4536: 0.279889   (-3.33%, -0.01)
### data-env-vars.name            = tryton-public-2024-03-22-ds2-pnm
  # benchmark.name                = hg.command.log
  # bin-env-vars.hg.flavor        = rust
  # bin-env-vars.hg.py-re2-module = default
  # benchmark.variants.limit-rev  = 1000
  # benchmark.variants.patch      = no
  # benchmark.variants.rev        = none
e679697a6ca4: 0.332270  ~~~~~
3fa1a4da4536: 0.323324   (-2.69%, -0.01)
```
0e4860a9
History

Mercurial
=========

Mercurial is a fast, easy to use, distributed revision control tool
for software developers.

Basic install::

$ make # see install targets
$ make install # do a system-wide install
$ hg debuginstall # sanity-check setup
$ hg # see help

Running without installing::

$ make local # build for inplace usage
$ ./hg --version # should show the latest version

See https://mercurial-scm.org/ for detailed installation
instructions, platform-specific notes, and Mercurial user information.

Notes for packagers
===================

Mercurial ships a copy of the python-zstandard sources. This is used to
provide support for zstd compression and decompression functionality. The
module is not intended to be replaced by the plain python-zstandard nor
is it intended to use a system zstd library. Patches can result in hard
to diagnose errors and are explicitly discouraged as unsupported
configuration.