In Mercurial 3.4 a new wire protocol is supported, bundle2. In 3.4 this wire protocol was enabled by default only for servers, and in 3.5 it was enabled by default for both clients and servers.
|Support for atomic push/pull transactions
|-> Mercurial has gone quite a while without this (up to 3.4)
|May be required for Changeset Evolution or other newer features
|-> Phabricator may not utilize Changeset Evolution at all
|Very littled documentation about bundle2, mostly defers to reading source/comments
|A more complex solution for bundle2 -> significant effort to support
- https://selenic.com/hg/file/21aa1c313b05/mercurial/bundle2.py (Bundle2 implementation at 3.5 tagged release).
Some initial discussions in T9450, which resolved errors by dropping support for bundle2 altogether.
Discussions of bundle2, specifically mentioning atomic push/pull operations: