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.<br><br>In that thread, we were discussing maintaining support for Python 2.4 and 2.5. The latest response is:<br>
<br>On Fri, Nov 30, 2012 at 1:40 PM, Daniel Dunbar <span dir="ltr"><<a href="mailto:daniel@zuster.org" target="_blank">daniel@zuster.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
My official opinion on Python version support is to maintain old
compatibility, unless it is causing large problems with the code.<br>
</blockquote><br>I would like to offer a counter opinion.<br><br>I believe LLVM should drop support for Python 2.4 and 2.5 for 2 main reasons:<br><br>1) Python 2.4 and 2.5 are end-of-lifed<br>2) Python 3 is coming<br><br>
IMO, #1 should be reason enough. Let me explain #2.<br><br>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).<br>
<br>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).<br>
<br>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.<br>
<br>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.<br><br>[1] <a href="https://groups.google.com/d/topic/mozilla.dev.platform/djN02O03APc/discussion">https://groups.google.com/d/topic/mozilla.dev.platform/djN02O03APc/discussion</a><br>
<br>Gregory<br>