Differences between revisions 15 and 17 (spanning 2 versions)
Revision 15 as of 2016-12-09 17:22:44
Size: 2378
Editor: Rain
Comment:
Revision 17 as of 2019-03-04 01:52:32
Size: 1777
Editor: GregorySzorc
Comment: link to Python3
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
Mercurial versions up to 3.4.x support Python versions 2.6 to 2.7, provided they include the following standard library components:
Mercurial 4.3 and newer require Python 2.7.
Mercurial versions up to 4.2 support Python versions 2.6 to 2.7, provided they include the following standard library components:
Line 17: Line 18:
Mercurial 4.3 dropped support for Python 2.6. As work towards porting to Python 3 progressed, continuing to support Python 2.6 was a hindrance to porting efforts.
Line 24: Line 27:
We will continue to support Python 2.6 and 2.7 for the foreseeable future. We will continue to support Python 2.7 for the foreseeable future.
Line 29: Line 32:
{i} As of April 2014, we have been assured Python 2.x maintenance will continue for the foreseeable future.

Python 3.x has proven notoriously difficult to support, due to our pervasive dependence on a byte-based encoding strategy and string manipulation. We have invested a substantial amount of time into porting at this point and we estimate at least a person-year of core developer time to make a full 3.x-compatible version. Also, Python 3.x has proven significantly slower in almost all benchmarks that matter to us, especially start-up time.

The only features important to us in Python 3.x (improved SSL support) have already been backported to Python 2.7.9. As there is so little else to be gained by a Python 3.x port, so much work involved, and we will need to continue to support 2.x for several years still, this is not an attractive or high-priority project.
Mercurial is actively being ported to Python 3. See [[Python3]] for more.

Supported Python Versions

The versions of Python supported by Mercurial.

1. Current support

Mercurial 4.3 and newer require Python 2.7. Mercurial versions up to 4.2 support Python versions 2.6 to 2.7, provided they include the following standard library components:

  • sha/hashlib
  • gzip
  • bz2 (needed for bundles)
  • ctypes (only on Windows)

Mercurial 3.5 dropped support for Python 2.4 and 2.5. As our primary users of these Python versions are enterprise Linux users of RHEL 5 and Centos 5, we've started packaging RPMs for these systems with a private copy of a recent Python.

Mercurial 4.3 dropped support for Python 2.6. As work towards porting to Python 3 progressed, continuing to support Python 2.6 was a hindrance to porting efforts.

Some versions of Python may have difficulty with some particular features. For instance, Python before 2.5 cannot properly verify SSL certificates.

2. Future support plan

Python 2.3 support was dropped in July 2009 for Mercurial 1.3 when it became difficult for developers to continue testing compatibility. Now that we have a 2.4 buildbot, this is mostly a non-issue.

Python 2.4 and 2.5 support was dropped in May 2015 for Mercurial 3.5 as it was becoming a barrier to Python 3.x support.

We will continue to support Python 2.7 for the foreseeable future.

3. Python 3.x support

{i} Python 3.x has no relation to Windows Unicode filename support, see EncodingStrategy.

Mercurial is actively being ported to Python 3. See Python3 for more.

Mercurial will never support Python 3.0 to 3.4 because of missing support for the % operator on bytestrings (bytes in Python 3).


SupportedPythonVersions (last edited 2022-03-04 01:04:18 by GregorySzorc)