view relnotes/6.7 @ 51580:b70628a9aa7e

phases: use revision number in new_heads All graph operations will be done using revision numbers, so passing nodes only means they will eventually get converted to revision numbers internally. As part of an effort to align the code on using revision number we make the `phases.newheads` function operated on revision number, taking them as input and using them in returns, instead of the node-id it used to consume and produce. This is part of multiple changesets effort to translate more part of the logic, but is done step by step to facilitate the identification of issue that might arise in mercurial core and extensions. To make the change simpler to handle for third party extensions, we also rename the function, using a more modern form. This will help detecting the different between the node-id version and the rev-num version. I also take this as an opportunity to add some comment about possible performance improvement for the future. They don't matter too much now, but they are worse exploring in a while.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 05 Apr 2024 11:33:47 +0200
parents 803e61387e86
children 028dc3f92dbd
line wrap: on
line source

= Mercurial 6.7.2 =

Exceptional release following a large performance regression when cloning.

We are setting up automated benchmarks to reduce the likelihood of regressions
of the sort from happening in the future.

 * phases: avoid a potentially costly dictionary interation in some case
 * phases: update the phase set as we go during retract boundary
 * bundle2: make the "hgtagsfnodes" part advisory

= Mercurial 6.7.1 =

Exceptional release following a crash found in delta code that can be triggered
with complex repository shapes.

 * delta-search: fix crash caused by unbound variable
 * sshpeer: fix path when handling invalid url exception
 * subrepo: fix normalizing paths with scheme

= Mercurial 6.7 =

As usual, a *lot* of patches don't make it to this list.

== New Features ==

 * JSON templates can now use structured diffstat data
 * Support rhg status --rev --rev
 * The index for REVLOGv1 now has a Rust implementation
 * Improved `hg censor`'s output
 * censor: add a command flag to skip the head checks
 * censor: accept multiple revision in a single call
 * usage: add a `usage.repository-role` config
 * branchmap: use mmap for faster revbranchcache loading
 * crecord: enable search hotkeys (issue6834)
 * hg-core: separate timestamp and extra methods
 * annotate: limit output to range of lines
 * unbundle: faster computation of changed heads
 * Large improvements of some of the phases code (23950e39281f)
 * rust-filepatterns: export glob_to_re function

== New Experimental Features ==

 * Introduce `hg admin::chainsaw-update` for automation and *advanced* users

== Bug Fixes ==

 * templatekw: fix inconsistency of diffstat with diff.merge
 * The endless stream of Python 3 cleanups continues
 * Improved setup.py robustness
 * Improved test suite robustness
 * add: don't attempt to add back removed files unless explicitly listed
 * statprof: handle `lineno == None` in more cases
 * rust: fix cargo doc for hg-cpython
 * rust-python-index: don't panic on a corrupted index when calling from Python
 * debugindexstats: handle the lack of Rust support better
 * matchers: use correct method for finding index in vector
 * narrow: strip trailing `/` from manifest dir before matching it
 * cext: fix potential memory leaks of list items appended with PyList_Append
 * doc: document that labels must have a dot in them to have an effect
 * debugformat: fix formatting for compression level
 * obsutil: sort metadata before comparing in geteffectflag()
 * crecord: drop calls to `curses.endwin()`
 * rust-index: don't use mutable borrow for head-diff computation
 * rust-index: don't use mutable borrow to computed filtered heads


== Backwards Compatibility Changes ==

Users of the Rust extensions and/or `rhg` should be aware that the new Rust
index can result in a performance degradation for push/pull on repositories
*not* using `persistent-nodemap` (see `hg help config.format.use-persistent-nodemap`).

If this is something that matters to you, please reach out to us as this is not
an insurmountable obstacle. This is a choice base on the assumption that
there are few people in this situation and our time should be spent on more
pressing matters.

== Internal API Changes ==

 * 62913:498017baa34b "cleanup: remove some code scheduled to be removed after 5.9"
 * 62914:88ef80210d67 "cleanup: drop `dirstate.is_changing_parent` deprecated since 6.5"
 * 62915:591845f89ada "cleanup: drop `path.pushloc` deprecated since 6.5"
 * 62916:d8f65fc72e7b "cleanup: drop deprecated config attribute on the revlog class"
 * 62917:5c9c41273367 "cleanup: turn `pathsuboption` deprecation warning into an error"
 * 62918:7b837fabc990 "cleanup: turn `wrappedfunction` deprecation warning into an error"
 * 62919:eda075d7b2ac "cleanup: turn `wrapfunction` deprecation warning into an error"
 * 62920:c845479fc64d "cleanup: drop the `bytes` compatibility for attribute related function"
 * 63464:dcaa2df1f688 "changelog: never inline changelog"
 * 63465:a93e52f0b6ff "changelog: disallow delayed write on inline changesets"
 * 63825:79cd29d598af "dirstate: make the `transaction` argument of `setbranch` mandatory"

== Miscellaneous ==

 * perf: support --template on perf::phases
 * perf: add a --as-push option to perf::unbundle
 * debug: add a debug::unbundle command that simulate the unbundle from a push
 * Lots of refactorings to prepare for performance improvements and remove tech debt