relnotes/5.5
author Manuel Jacob <me@manueljacob.de>
Sun, 22 May 2022 03:50:34 +0200
changeset 49269 395f28064826
parent 45240 53a6febafc66
permissions -rw-r--r--
worker: avoid potential partial write of pickled data Previously, the code wrote the pickled data using os.write(). However, os.write() can write less bytes than passed to it. To trigger the problem, the pickled data had to be larger than 2147479552 bytes on my system. Instead, open a file object and pass it to pickle.dump(). This also has the advantage that it doesn’t buffer the whole pickled data in memory. Note that the opened file must be buffered because pickle doesn’t support unbuffered streams because unbuffered streams’ write() method might write less bytes than passed to it (like os.write()) but pickle.dump() relies on that all bytes are written (see https://github.com/python/cpython/issues/93050). The side effect of using a file object and a with statement is that wfd is explicitly closed now while it seems like before it was implicitly closed by process exit.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     1
== New Features ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     2
45062
72feaeb510b3 clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents: 44996
diff changeset
     3
 * clonebundles can be annotated with the expected memory requirements
72feaeb510b3 clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents: 44996
diff changeset
     4
   using the `REQUIREDRAM` option. This allows clients to skip
72feaeb510b3 clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents: 44996
diff changeset
     5
   bundles created with large zstd windows and fallback to larger, but
72feaeb510b3 clonebundles: optional memory-requirement attribution
Joerg Sonnenberger <joerg@bec.de>
parents: 44996
diff changeset
     6
   less demanding bundles.
44396
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44392
diff changeset
     7
45169
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
     8
 * The `phabricator` extension now provides more functionality of the
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
     9
   arcanist CLI like changing the status of a differential.
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    10
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    11
 * Phases processing is much faster, especially for repositories with
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    12
   old non-public changesets.
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    13
45189
045f5361bd12 relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents: 45169
diff changeset
    14
44367
9dab3fa64325 copy: add experimental support for marking committed copies
Martin von Zweigbergk <martinvonz@google.com>
parents: 44365
diff changeset
    15
== New Experimental Features ==
44343
8561ad49915d revset: add a revset for parents in merge state
Martin von Zweigbergk <martinvonz@google.com>
parents: 44289
diff changeset
    16
44905
f330d6117a5b relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44893
diff changeset
    17
 * The core of some hg operations have been (and are being)
f330d6117a5b relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44893
diff changeset
    18
   implemented in rust, for speed. `hg status` on a repository with
f330d6117a5b relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44893
diff changeset
    19
   300k tracked files goes from 1.8s to 0.6s for instance.
f330d6117a5b relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44893
diff changeset
    20
   This has currently been tested only on linux, and does not build on
f330d6117a5b relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44893
diff changeset
    21
   windows. See rust/README.rst in the mercurial repository for
f330d6117a5b relnotes: advertize the possibility to use rust
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44893
diff changeset
    22
   instructions to opt into this.
44412
edc8504bc26b exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 44398
diff changeset
    23
45191
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    24
 * An experimental config `rewrite.empty-successor` was introduced to control
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    25
   what happens when rewrite operations result in empty changesets.
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    26
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    27
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    28
== Bug Fixes ==
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    29
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    30
 * For the case when connected to a TTY, stdout was fixed to be line-buffered
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    31
   on Python 3 (where it was block-buffered before, causing the process to seem
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    32
   hanging) and Windows on Python 2 (where it was unbuffered before).
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    33
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    34
 * Subversion sources of the convert extension were fixed to work on Python 3.
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    35
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    36
 * Subversion sources of the convert extension now interpret the encoding of
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    37
   URLs like Subversion. Previously, there were situations where the convert
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    38
   extension recognized a repository as present but Subversion did not, and
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    39
   vice versa.
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    40
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    41
 * The empty changeset check of in-memory rebases was fixed to match that of
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    42
   normal rebases (and that of the commit command).
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    43
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    44
 * The push command now checks the correct set of outgoing changesets for
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    45
   obsolete and unstable changesets. Previously, it could happen that the check
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    46
   prevented pushing changesets which were already on the server.
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    47
45189
045f5361bd12 relnotes: make spacing before new section consistent
Manuel Jacob <me@manueljacob.de>
parents: 45169
diff changeset
    48
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    49
== Backwards Compatibility Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    50
45190
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    51
 * Mercurial now requires at least Python 2.7.9 or a Python version that
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    52
   backported modern SSL/TLS features (as defined in PEP 466), and that Python
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    53
   was compiled against a OpenSSL version supporting TLS 1.1 or TLS 1.2
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    54
   (likely this requires the OpenSSL version to be at least 1.0.1).
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    55
 
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    56
 * The `hg perfwrite` command from contrib/perf.py was made more flexible and
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    57
   changed its default behavior. To get the previous behavior, run `hg perfwrite
189030efd7bb relnotes: fix indentation
Manuel Jacob <me@manueljacob.de>
parents: 45189
diff changeset
    58
   --nlines=100000 --nitems=1 --item='Testing write performance' --batch-line`.
44996
c2df0bca0dfa perf: make `hg perfwrite` more flexible
Manuel Jacob <me@manueljacob.de>
parents: 44905
diff changeset
    59
45191
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    60
 * The absorb extension now preserves changesets with no file changes that can
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    61
   be created by the commit command (those which change the branch name
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    62
   compared to the parent and those closing a branch head).
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    63
44396
acbfa31cfaf2 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com>
parents: 44392
diff changeset
    64
42271
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    65
== Internal API Changes ==
0ed293a3f00e releasenotes: add a file in which to record release notes
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    66
44853
ba5688e3b3bd relnotes: add API change note per request in D8502
Augie Fackler <augie@google.com>
parents: 44827
diff changeset
    67
 * logcmdutil.diffordiffstat() now takes contexts instead of nodes.
ba5688e3b3bd relnotes: add API change note per request in D8502
Augie Fackler <augie@google.com>
parents: 44827
diff changeset
    68
44856
b7808443ed6a mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents: 44853
diff changeset
    69
 * The `mergestate` class along with some related methods and constants have
b7808443ed6a mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents: 44853
diff changeset
    70
   moved from `mercurial.merge` to a new `mercurial.mergestate` module.
b7808443ed6a mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents: 44853
diff changeset
    71
45169
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    72
 * The `phasecache` class now uses sparse dictionaries for the phase data.
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    73
   New accessors are provided to detect if any non-public changeset exists
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    74
   (`hasnonpublicphases`) and get the correponsponding root set
3496b5f24371 relnotes: extend
Joerg Sonnenberger <joerg@bec.de>
parents: 45062
diff changeset
    75
   (`nonpublicphaseroots`).
45191
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    76
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    77
 * The `stdin`, `stdout` and `stderr` attributes of the `mercurial.pycompat`
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    78
   module were removed. Instead, the attributes of same name from the
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    79
   `mercurial.utils.procutil` module should be used, which provide more
fc54f52779dd relnotes: add release notes for relevant changes I did since the 5.4 release
Manuel Jacob <me@manueljacob.de>
parents: 45190
diff changeset
    80
   consistent behavior across Python versions and platforms.