Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:22:22 +0100] rev 49044
rust-hg-core: upgrade dependencies
This upgrades all dependencies to their latest version, except `clap` and `zstd`
whose latest versions do not support our minimum supported Rust version 1.48.0.
Same as for `rhg`, it contains security fix for `regex` which does not affect
us too much, but doesn't hurt, and the rest of the upgrades are there simply
to keep up.
Differential Revision: https://phab.mercurial-scm.org/D12358
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:17:09 +0100] rev 49043
rhg: upgrade dependencies
This upgrades all dependencies to their latest version, except `clap`, which
is upgraded to the last 2.x series version, since 3.x does not support our
minimum supported Rust version of 1.48.0.
This contains a security fix for `regex` which does not affect us too much, but
doesn't hurt, and the rest of the upgrades are there simply to keep up.
Differential Revision: https://phab.mercurial-scm.org/D12357
Yuya Nishihara <yuya@tcha.org> [Fri, 04 Mar 2022 10:28:46 +0900] rev 49042
chgserver: remove Python 2 file descriptor logic
Follows up 0bb28b7736bc "chgserver: remove Python 2 support code."
On Python 2, we had to close newfp prior to restoring the original file
description since "delete newfp" would otherwise close the file descriptor
shared with the long-lived fp:
in attachio():
newfp = os.fdopen(fp.fileno(), mode, bufsize)
in _restoreio():
newfp.close() # temporarily close newfp.fileno() (= fp.fileno())
os.dup2(fd, fp.fileno()) # reopen fp.fileno() with original fd
On the other hand, we shouldn't call newfp.close() on Python 3 since
any function calls are proxied to the underlying file object by
procutil.LineBufferedWrapper.
Simon Sapin <simon.sapin@octobus.net> [Tue, 08 Feb 2022 15:51:52 +0100] rev 49041
dirstate-tree: optimize HashMap lookups with raw_entry_mut
This switches to using `HashMap` from the hashbrown crate,
in order to use its `raw_entry_mut` method.
The standard library’s `HashMap` is also based on this same crate,
but `raw_entry_mut` is not yet stable there:
https://github.com/rust-lang/rust/issues/56167
Using version 0.9 because 0.10 is yanked and 0.11 requires Rust 1.49
This replaces in `DirstateMap::get_or_insert_node` a call to
`HashMap<K, V>::entry` with `K = WithBasename<Cow<'on_disk, HgPath>>`.
`entry` takes and consumes an "owned" `key: K` parameter, in case a new entry
ends up inserted. This key is converted by `to_cow` from a value that borrows
the `'path` lifetime.
When this function is called by `Dirstate::new_v1`, `'path` is in fact
the same as `'on_disk` so `to_cow` can return an owned key that contains
`Cow::Borrowed`.
For other callers, `to_cow` needs to create a `Cow::Owned` and thus make
a costly heap memory allocation. This is wasteful if this key was already
present in the map. Even when inserting a new node this is typically the case
for its ancestor nodes (assuming most directories have numerous descendants).
Differential Revision: https://phab.mercurial-scm.org/D12317
Raphaël Gomès <rgomes@octobus.net> [Fri, 04 Mar 2022 13:33:55 +0100] rev 49040
heptapod-ci: remove useless mentions of Python 3
Now that we don't have Python 2 jobs, we can go with shorter names.
Differential Revision: https://phab.mercurial-scm.org/D12354
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 Mar 2022 13:01:13 -0800] rev 49039
revlog: remove unused `rank` variable from D12209
Differential Revision: https://phab.mercurial-scm.org/D12355
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 13:10:22 -0700] rev 49038
demandimport: delete demandimportpy2 module
We no longer support Python 2.
Differential Revision: https://phab.mercurial-scm.org/D12353
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 13:08:28 -0700] rev 49037
py3: use class X: instead of class X(object):
The inheritance from object is implied in Python 3. So this should
be equivalent.
This change was generated via an automated search and replace. So there
may have been some accidental changes.
Differential Revision: https://phab.mercurial-scm.org/D12352
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 13:03:43 -0700] rev 49036
check-code: remove ban on old-style classes
In Python 3, `class foo:` is equivalent to `class foo(object):`. So
we can allow the former form now.
Differential Revision: https://phab.mercurial-scm.org/D12351
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:46:27 -0700] rev 49035
tests: remove Python 2 support code
Differential Revision: https://phab.mercurial-scm.org/D12350
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:44:41 -0700] rev 49034
tests: remove Python < 3 check
We require Python 3 now.
Differential Revision: https://phab.mercurial-scm.org/D12349
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:53:52 -0800] rev 49033
cborutil: remove Python 2 definition of _elementtointeger()
Differential Revision: https://phab.mercurial-scm.org/D12348
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:42:48 -0700] rev 49032
py3: stop using util.iterfile()
The Python 3 implementation is a no-op. So this is equivalent.
We still keep util.iterfile() around for backwards API compatibility to
help the Python 3 migration. It can be deleted in a future release.
Differential Revision: https://phab.mercurial-scm.org/D12347
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 07:56:47 -0800] rev 49031
util: remove iterfile() variant for buggy EINTR handling
The workaround for Python 2 is no longer needed. So we can delete some
code.
Differential Revision: https://phab.mercurial-scm.org/D12346
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:36:57 -0700] rev 49030
statprof: remove superfluous sys.version_info check
Always true since we require Python 3 now.
Differential Revision: https://phab.mercurial-scm.org/D12345
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:36:04 -0700] rev 49029
policy: remove Python 2.7 compatibility code
Differential Revision: https://phab.mercurial-scm.org/D12344
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:35:29 -0700] rev 49028
lsprof: remove some Python 2.7 compatibility code
Differential Revision: https://phab.mercurial-scm.org/D12343
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:34:22 -0700] rev 49027
url: remove Python 2.7 support code
Differential Revision: https://phab.mercurial-scm.org/D12342
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:52:32 -0800] rev 49026
py3: replace pycompat.itervalues(x) with x.values()
pycompat.itervalues(x) just calls x.values(). So this is equivalent.
The rewrite was perfomed via an automated search and replace.
Differential Revision: https://phab.mercurial-scm.org/D12341
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:24:57 -0700] rev 49025
py3: use str instead of pycompat.unicode
pycompat.unicode is an alias to str.
Differential Revision: https://phab.mercurial-scm.org/D12340
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 10:58:22 +0100] rev 49024
ui: use input() directly
pycompat.rawinput() is an alias to input()
Differential Revision: https://phab.mercurial-scm.org/D12339
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:50:34 -0800] rev 49023
py3: use int instead of pycompat.long
pycompat.long is aliased to int. So this should have no change in
functionality.
Differential Revision: https://phab.mercurial-scm.org/D12338
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:13:37 -0700] rev 49022
verify: remove pycompat.iteritems()
Differential Revision: https://phab.mercurial-scm.org/D12336
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:13:15 -0700] rev 49021
templatekw: remove pycompat.iteritems()
Differential Revision: https://phab.mercurial-scm.org/D12335