[LLVMdev] Minimum Python Version

Gregory Szorc gregory.szorc at gmail.com
Sat Dec 1 12:57:48 PST 2012


I'd like to continue the discussion about minimum Python versions from the
"Use multiprocessing instead of threading" thread in its own thread because
I feel it warrants additional discussion.

In that thread, we were discussing maintaining support for Python 2.4 and
2.5. The latest response is:

On Fri, Nov 30, 2012 at 1:40 PM, Daniel Dunbar <daniel at zuster.org> wrote:

> My official opinion on Python version support is to maintain old
> compatibility, unless it is causing large problems with the code.
>

I would like to offer a counter opinion.

I believe LLVM should drop support for Python 2.4 and 2.5 for 2 main
reasons:

1) Python 2.4 and 2.5 are end-of-lifed
2) Python 3 is coming

IMO, #1 should be reason enough. Let me explain #2.

All the Python in the tree will need to eventually support Python 3.
"Modern" Linux distributions like Ubuntu are already shipping Python 3 as
/usr/bin/python (while still offering 2.7 because the overwhelming amount
of Python in the wild doesn't yet work on Python 3).

The road to Python 3 for LLVM will likely come via Python code that works
under both 2.x and 3.x (I'm assuming nobody wants a flag day). From my
personal experience, I can unequivocally say that writing Python that works
on both major versions is much easier the closer the Python 2 release is to
3. In other words, It's much easier to dually support Python 2.7 and 3.x
than it is 2.5 and 3.x. I feel the level of pain is pretty bad until you
get to Python 2.6. Even then, there are dozens of small bugs in Python 2.6
and even earlier releases of Python 2.7 until 2.7.3 that make dual support
difficult (especially in the area of Unicode handling).

For these reasons, I urge LLVM to drop support for Python older than 2.6. I
would encourage requiring 2.7 (preferably the latest available release -
2.7.3 at this time) at the earliest convenience, but I'm not explicitly
asking for it. While continued support for older Pythons is a noble goal
and may continue to support people clinging to ancient Python releases,
this will only make the path forward more difficult, as it puts an
additional burden on those maintaining Python in the tree.

FWIW, I've been pushing this same argument at Mozilla for the Firefox tree
[1], where so far it has been winning. We dropped Python 2.5 about 6 weeks
ago and IIRC the only issue was we forgot to update one set of builders
before we made the change. We have loosely agreed that we want to move
everything to Python 2.7 (then 2.7/3.x and then eventually 3.x) and will be
discussing this change in the days ahead. While I'm sure LLVM supports some
more esoteric platforms than Firefox, I believe the data point is still
relevant and LLVM could make a similar transition without a major headache.

[1]
https://groups.google.com/d/topic/mozilla.dev.platform/djN02O03APc/discussion

Gregory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121201/6318c557/attachment.html>


More information about the llvm-dev mailing list