Differences between revisions 10 and 11
Revision 10 as of 2015-01-27 19:42:09
Size: 2694
Editor: mpm
Comment:
Revision 11 as of 2015-05-11 23:04:33
Size: 2265
Editor: mpm
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
Mercurial currently supports Python versions 2.4 to 2.7, provided they include the following standard library components: Mercurial versions up to 3.4.x support Python versions 2.4 to 2.7, provided they include the following standard library components:
Line 16: Line 16:
Mercurial versions after 3.4.x will drop 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.
Line 21: Line 23:
We will continue to support Python 2.4 as long as it doesn't present a significant barrier to development. Given that Python 2.5 and later don't contain any features that we're dying to use, that may be a long time off. Python did however have a lot of problems with HTTP and SSL until 2.6.3. Mercurial on these old versions can thus only create unverified HTTPS connections and has limited support for proxy use. 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.
Line 23: Line 25:
We now have a suite of automated code tests and a continuous build server that will find most Python 2.4 issues even though most developers now use Python 2.6 or later.

We also will continue to support Python 2.x as long as there is a significant installed base in the form of Red Hat Enterprise Linux and Ubuntu LTS users. RHEL 5, which uses Python 2.4, will reach the end of the "production 2" portion of its lifecycle in Q1 2014 and the end of its regular lifecycle in 2017.
We will continue to support Python 2.6 and 2.7 for the foreseeable future.

Supported Python Versions

The versions of Python supported by Mercurial.

1. Current support

Mercurial versions up to 3.4.x support Python versions 2.4 to 2.7, provided they include the following standard library components:

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

Mercurial versions after 3.4.x will drop 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.

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.6 and 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.

{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.


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