Programming in Python 3 much like previous Pythons
Python 3 represents Guido's liberation. Guido van Rossum, Python's inventor and continuing lead, has been scrupulous about backward compatibility for twenty years. Finally, with Python 3 (also called "Python 3.0" or, in older and more playful documents, "Python 3000"), he is free to change parts of Python that he now regards as blemishes. For us application programmers--or at least for me--Python 3 feels little different from previous releases. Many of the most profound changes have to do with "internal" clean-up that'll make a better basis for future development of Python as a language. "Clean" has always been an important qualification in Python's history; there's far more emphasis on getting the right features, than more features.
While Python 3 does offer new functionality, it doesn't change the daily routine of working in Python. Beside that, there's been an extraordinary effort to port new features back to the 2.x series of releases, so that 2.6, 2.7 and 2.8 can boast nearly all of the important syntax of 3.0 and 3.1.
Van Rossum works in CPython. That is, while in principle he defines the abstract Python language, in practice everyone know that means something like, "the core C-coded implementation". IronPython is maintained separately, and has no necessary relationship with van Rossum's work in schedule or source code. The two development crews are certainly friendly, though, and generally are able to track changes rather closely.
To this point, IronPython has emphasized 2.x as a target. As Jimmy Schementi, a Program Manager with Microsoft, e-mailed me last week, "IronPython's roadmap over the next year includes compatibility with Python 3. Also, we're planning on a release ... before our first 3.2-compatible release which will target 2.7 compatibility."
What does all this mean for you? Should you use Python 3.x or 2.x in your next project? I asked several experts that question a half-year ago; their predictable answer was, "it depends". Briefly, if you rely on an extension to standard Python, you're probably stuck back in 2.x. Otherwise, though, there's no reason not to jump to the latest 3.1 or even 3.2.