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>