Mercurial 4.1 (2017-02-01)#

Mercurial 4.1.3 (2017-04-18)#

This is an out of cycle release to address a security issue:

  • hg serve --stdio could be tricked into granting authorized users access to the Python debugger. Thanks to Jonathan Claudius of Mozilla for reporting this issue. This issue is only a security issue for repositories served using --stdio, which includes ssh but *not* http. This is CVE-2017-9462.

Mercurial 4.1.2 (2017-04-03)#

This is a regularly-scheduled bugfix release.

  • Mercurial should work inside IIS on Windows again. (issue5493)

  • zstd support now refuses to work on old bundle formats. (issue5506)

  • Merges involving subrepositories no longer crash in some cases. (issue5505)

  • Checking for new heads during push is no longer accidentally quadratic

Mercurial 4.1.1 (2017-03-02)#

This is a regularly-scheduled bugfix release.

  • Several incorrect mailing list addresses have been corrected.

  • Various error cases have been corrected during push and pull.

  • Minor issues that happened when Mercurial spawned worker processes have been fixed.

Mercurial 4.1 release#

Features#

  • A new extensible "compression engines" API has been implemented. Support for a new compression format can now be implemented in extensions.

    • New compression formats are fully supported in bundles and the wire protocol. There is experimental support for different compression in revlogs.

  • zstd - a new and exciting compression engine - is now distributed with Mercurial and built by default

    • HTTP payloads for many commands will now use zstd by default (as opposed to zlib) when both client and server support it. This can reduce server-side CPU usage to ~60% of original for operations like serving bundles.

    • zstd compressed bundles can be produced by specifying the zstd bundle type. e.g. hg bundle -a -t zstd-v2 zstd-bundle.hg.

  • A new statistical profiler has been added and made the default profiler for --profile. This profiler gives more accurate results than Python's built-in cProfile (the previous default) because the profiler overhead is much smaller. The output from --profile now displays the code hot path by default. This allows Mercurial developers to more accurately identify performance problems.

  • New followlines(file, from:to, startrev=.) revset predicate to track a part of changes.

  • Experimental support for additional git-diff features.

  • Troubled changes (from ChangesetEvolution) are noted more prominently in a few places.

  • An experimental hg debugupgraderepo command allows in-place upgrading of repositories to the latest storage format.

Improvements#

  • Performance of reading individual revlog entries has been greatly improved. This will be noticeable when performing changelog scans on large repositories (such as when executing certain revsets).

  • The low-level content diffing algorithm is now ~2x faster. Operations that write data to the repository (like commit) can be noticeably faster as a result.