view relnotes/6.1 @ 49233:520722523955

worker: implement _blockingreader.readinto() (issue6444) The core logic for readinto() was already implemented in read(), so this is mostly extracting that code into its own method. Another fix for issue6444 was committed to the stable branch: 2fe4efaa59af. That is a minimal fix that implements readinto() only on Python versions that require readinto() (3.8.0 and 3.8.1), which is the right approach for the stable branch. However, I think that this changeset has its value. It improves performance in cases when pickle can use readinto(), it reduces code duplication compared to the other patch, and by defining readinto() on all Python versions, it makes behavior more consistent across all Python versions. This changesets reverts the other change.
author Manuel Jacob <me@manueljacob.de>
date Sun, 22 May 2022 00:10:58 +0200
parents 4420e06c8810
children ce50d95cfa57 e8ea403b1c46
line wrap: on
line source

'''This is the last release to support Python 2. Mercurial is Python 3 only starting with 6.2'''

= Mercurial 6.1.2 =

 * Improve Windows test suite
 * Fix `debuglock` not ignoring a missing lockfile when forcing a lock
 * Improve help of `ui.large-file-limit`
 * Set the large-file-limit to 10MB (from 10MiB) for clarity
 * While rewriting desc hashes, ignore ambiguous prefix "hashes"
 * Fix a crash in partial amend with copies
 * Fix a py3 compatiblity bug
 * Fix incorrect metadata causing dirstate-v2 data loss in edge case
 * Fix cleanup of old dirstate-v2 data files when using `rhg`
 * Make reference to `.hg/last_message.txt` relative in commit
 * Fix an infinite hang when `rhg` is used in the background
 * Fix Python DLL loading bug in Windows
 * Add `--docket` flag to `debugstate` to check out dirstate-v2 metadata
 * Remove `debugdirstateignorepatternhash` in favor of `debugstate --docket`
 * Fix incorrect metadata causing systematic complete dirstate-v2 rewrite

= Mercurial 6.1.1 =

 * Fix Rust compilation on `aarcch64`
 * Fix Rust compilation on architectures where `char` is unsigned
 * When the merge tool uses `$output`, don't leave markers in `$local`
 * Improve test suite support on big-endian platforms
 * Cap the number of concurrent threads to 16 in Rust `hg status` to prevent huge speed regression at higher thread counts
 * Fix `amend` with copies in extras
 * Abort if commit we're trying to `unamend` was not created by `hg [un]amend`
 * Fix file name in the pullbundle help text
 * Fix an issue with data not being correctly reset in the C implementation of dirstate-v2
 * Fix issue6673 where some tags were missing from cache after a merge
 * Fix stream-cloning a repo with empty requirements
 * Fix a false warning about content-divergence creation
 * Fix silly blackbox entries when hg is interrupted
 * Fix unsoundness (no known exploits) in Rust extensions (see cfd270d83169 and dd6b67d5c256)
 * Fix Rust dirstate counters not being updated correctly leading to some potential bugs (none known)
 * Stop relying on a compiler implementation detail in Rust HgPath

= Mercurial 6.1 =

== New Features ==
  * Added a way of specifying required extensions that prevent Mercurial from starting if they are not found. See `hg help config.extensions`.
  * Merge conflict markers have been made clearer (see backwards compatibility below)
  * Improve detailed error codes
  * Added a hint about mangled whitespace on bad patch
  * Explain which order the commits are presented in `chistedit`
  * Introduce a `dirstate-tracked-hint` feature to help automation keep track of changes to tracked files. See `hg help config.use-dirstate-tracked-hint`.
  * Shared repositories can be upgraded if the upgrade is specific to the share. For now, this only applies to `dirstate-v2` and `dirstate-tracked-hint`.
  * When using the `narrow` extension, non-conflicting changes to files outside of the narrow specification can now be merged.
  * When cloning a repository using stream-clone, the client can now control the repository format variants to use as long as the stream content does not restrict that variant.

== Default Format Change ==

These changes affect newly created repositories (or new clones) done with Mercurial 6.1.

  * The `share-safe` format variant is now enabled by default. It makes configuration and requirements more consistent across repository and their shares. This introduces a behavior change as shares from a repository using the new format will also use their main repository's configuration. See `hg help config.format.use-share-safe` for details about the feature and the available options for auto-upgrading existing shares.


== New Experimental Features ==
  * The pure Rust version of Mercurial called `rhg` added support for most common invocations of `hg status`. See `hg help rust.rhg` for details on how to try it out.
  * `rhg` supports narrow clones and sparse checkouts.

== Bug Fixes ==

  * '''Obsolete revisions are skipped while computing heads. In conjunction with the `evolve` extension >= 10.5.0, this leads to massive exchange (push/pull) speedups in repositories with a lot of heads and/or obsolete revisions.'''
  * Stream-clones now properly advertise all requirements needed. This can result in the stream-clone feature being disabled for some clients using < 6.0.2. A small bugfix patch for these older client is available if necessary.
  * The `--no-check` and `--no-merge` flags now properly overwrite the behavior from `commands.update.check`
  * `rhg`'s fallback detection is more robust in general in the presence of more advanced configs
  * `rhg`'s `blackbox` now supports milliseconds by default and uses the same ISO 8601 format as the Python implementation
  * Fix `rhg` crash on non-generaldelta revlogs
  * The `lfs`, `largefiles` and `sparse` extensions now correctly take the appropriate lock before writing requirements 
  * The `notify` extension does not produce errors anymore if a revision is not found
  * Remove unnecessary and overly strict check for divergence in `hg fix`
  * Windows compatibility improvements
  * Miscellaneous Python 3 and typing improvements
  * Many other small or internal fixes

== Backwards Compatibility Changes ==

  * The use of `share-safe`, means shares (of new repositories) will also use their main repository's configuration see the `Default Format Change` section for details.
  * The fix to stream-clone requirements advertising means some requirements previously (wrongly) omitted are now sent. This can confuse client using a Mercurial version < 6.0.2. The client would consider these requirements unsupported even if it actually know them. If you encounter this, either upgrade your client or apply the necessary patch.
  * The labels passed to merge tools have changed slightly. Merge tools can get labels passed to them if you include `$labellocal`, `$labelbase`, and/or `$labelother` in the `merge-tool.<tool name>.args` configuration. These labels used to have some space-padding, and truncation to fit within 72 columns. Both the padding and the truncation has been removed.
  * Some of the text in labels passed to merge tools has changed. For example, in conflicts while running `hg histedit`, the labels used to be "local", "base", and "histedit". They are now "already edited", "parent of current change", and "current change", respectively.
  * The computation of namedbranch heads now ignores obsolete revisions. User of the Changeset Evolution feature may see a change in location and numbers of heads of each named branches (and topic).
  * The remotefilelog extension now requires an appropriate excludepattern for subrepositories.
  * `debugsparse`'s interface has been reworked to be more flexible. Since it's a debug command it is not actually a breaking change, but it is worth noting here.
  * Temporary files for merges are now all inside a `hgmerge` directory instead of at the root of `TMPDIR`. The corresponding experimental `mergetempdirprefix` config option has been removed.

== Internal API Changes ==

  * The dirstate API received minor modifications.

== Miscellaneous ==

  * Removed exchange-v2. It was a prototype that had never been in a working state and had been left untouched since 2017.