Mercurial > hg
view relnotes/6.5 @ 51108:0250e45040f1
revlog: add a small cache of unfiltered chunk
This can provides a massive boost to the reading of multiple revision and the
computation of a valid delta chain.
This greatly help operation like `hg log --patch`, delta computation (helping
pull/unbundle), linkrev adjustment (helping copy tracing).
A first round of benchmark for `hg log --patch --limit 1000` shows improvement
in the 10-20% range on "small" repository like pypy or mercurial and large
improvements (about 33%) for more complex ones like netbeans and mozilla's.
These speeds up are consistent with the improvement to `hg pull` (from a server
sending poor deltas) I saw benchmarking this last year. Further benchmark will
be run during the freeze.
I added some configuration in the experimental space to be able to further test
the effect of various tuning for now. This feature should fit well in the
"usage/resource profile" configuration that we should land next cycle.
When it does not provides a benefit the overhead of the cache seem to be around
2%, a small price for the big improvement. In addition I believe we could shave
most of this overhead with a more efficent lru implementation.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 27 Oct 2023 08:54:41 +0200 |
parents | 5a8b54201039 |
children | c083d9776cb2 |
line wrap: on
line source
= Mercurial 6.5.2 = * hgweb: encode WSGI environment using the ISO-8859-1 codec * rhg: fix the bug where sparse config is interpreted as relglob instead of glob * gpg: fix an UnboundLocalError whenever using --force * transaction: fix __repr__() and make the default name bytes * setup: make the error "Unable to find a working hg binary" more informative * tests: avoid test environment affecting setup.py * run-tests: detect HGWITHRUSTEXT value = Mercurial 6.5.1 = * A bunch of improvements to Python 3.12 compatibility * repoview: fix the filter created by `extrafilter` * Improve portability of the test suite * fncache: fix a bug that corrupts the fncache after transaction rollback * revlog: fix the naming scheme use by split temporary file * perf: fix perf::tags = Mercurial 6.5 = As usual, a lot of patches don't make it to this list since they're more internal. == New Features == * Improved Python 3.12 compatiblity * configitems: enable changegroup3 by default (unless using infinitepush) * extras: expose 'retained_extras' for extensions to extend * stabletailgraph: implement stable-tail sort * stabletailgraph: naive version of leap computation * bundle: introduce a "v3" spec * clone-bundles: add a basic first version of automatic bundle generation * clone-bundles: garbage collect older bundle when generating new ones * clone-bundles: only regenerate the clone bundle when cached ration is low * clone-bundles: also control automation based on absolute number of revisions * clone-bundles: add a configuration to control auto-generation on changes * clone-bundles: introduce a command to refresh bundle * clone-bundles: add a command to clear all bundles * clone-bundles: add an option to generate bundles in the background * clonebundles: add support for inline (streaming) clonebundles * clonebundles: adds a auto-generate.serve-inline option * match: add `filepath:` pattern to match an exact filepath relative to the root * hgweb: add "children" into the JSON template for a changeset * hgweb: add support to explicitly access hidden changesets * pull: add --remote-hidden option and pass it through peer creation * hidden: add support for --remote-hidden to HTTP peer * hidden: support passing --hidden with `serve --stdio` * hidden: add support to explicitly access hidden changesets with SSH peers * perf: introduce a `perf::stream-locked-section` command * perf: add a function to find a stream version generator * perf: add support for stream-v3 during benchmark * perf: add a perf::stream-generate command * perf: add a perf::stream-consume * cli: make debugnodemap capable of inspecting an arbitrary nodemap * rust: configure MSRV in Clippy * rhg: make `rhg files` work if `ui.relative-files=true` is specified * rhg: support `rhg files` with `ui.relative-paths=false` * rhg: support `status --print0` * tree-manifest: allow `debugupgraderepo` to run on tree manifest repo * library: enable runpy invocation on mercurial package * library: incorporate demandimport into runpy invocation * exchange: allow passing no includes/excludes to `pull()` == New Experimental Features == * stream-clone: add an experimental v3 version of the protocol * stream-clone: support streamv3 on the cli [hg bundle] == Bug Fixes == * mail: add a missing argument to properly override starttls * bundle: include required phases when saving a bundle (issue6794) * outgoing: fix common-heads computation from `missingroots` argument * strip: do not include internal changeset in the strip backup * bundle: abort if the user request bundling of internal changesets * bundle: prevent implicit bundling of internal changeset * encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings * sha1dc: Make sure SHA1DC_BIGENDIAN is set on Darwin/PowerPC * zstd: hack include order to ensure that our zstd.h is found * dirstate: better error messages when dirstate is corrupted * stream-clone: avoid opening a revlog in case we do not need it * treemanifest: make `updatecaches` update the nodemaps for all directories * rust-hg-core: move from `ouroboros` to `self_cell` * rust-dependencies: switch from `users` to `whoami` * dirstate-v2: actually fix the dirstate-v2 upgrade race * dirstate: avoid leaking disk space in `hg debugrebuilddirstate` * clonebundles: add warning if auto-generate is enabled without formats * win32mbcs: unbyteify some strings for py3 support * rust-revlog: fix incorrect results with NULL_NODE prefixes * rust-revlog: fix RevlogEntry.data() for NULL_REVISION == Backwards Compatibility Changes == * infinitepush: aggressively deprecated infinite push * narrow: indicated the default of 'Yes' when confirming auto-remove-includes == Internal API Changes == * Store walk was reworked to fix small race conditions in stream-clone and greatly improve its API robustness and flexibility. == Miscellaneous == * Typechecking support was improved in a lot of places * Removed more useless compat code for now unsupported Python versions * Sped up zstd usage in Rust contexts * revlog: add an exception hint when processing LFS flags without the extension * ui: keep the progress bar around when writing if stdout is not a tty * transaction: use a ".bck" extension for all backup file