Python 3.3 is on the way

You’ve probably seen the mailing list announcements and the tweets which declare that Python 3.3 is entering its beta stage. For core developers this means that no more features can be introduced into this version of Python (at least not without the connivance of the Release Manager: Georg Brandl). Bug fixes are still allowed — which sometimes leads to rather creative labelling of changesets.

Have a look at the preliminary “What’s New?” doc.

Up to now, Python core developers have been championing Python 3 over Python 2 largely on the basis of a significant amount of cleanups, rationalisation and cruft-clearing. Now all this is very good, but mostly pleases people who have to work with the underlying Python code & data or who are fond of housekeeping. Clearly there have been other additions. (In fact the more I read through the “What’s New?” documents the more I realise that we’ve been doing something of a poor job of advertising our own achievements). But there hasn’t perhaps been anything which is really structurally groundbreaking.

Now we’ve got built-in virtual environment support, proper namespace packages, a much clearer OS exceptions hierarchy, and — at long last — a way of yielding from other iterators. (That thing where you had to loop over an iterator yielding its values: you can now just “yield from”). Any one of those alone is surely worth the entrance price. It’s actually starting to become attractive to use Python 3.x not just because it’s cleaned-up (on the moral highground but without much of a change of scenery) but because it’s got cool new features that I actually need (wow! look at that view).

To be sure there are literally hundreds of other small changes, ranging from one-off bugfixes to large-scale rewrites: bz2 has been rewritten from scratch; Brett Cannon’s finally achieved his objective of reimplementing the import mechanism in Python; Unicode support under the covers is cleaner and faster; the useful-but-slower decimal module is now useful-but-faster thanks to a version written in C, the indefatigable Stefan Krah getting the credit there. And after much bouncing around, Peter Moody’s ipaddress module is now integrated in the stdlib.

For Windows users, two significant changes have made it in (although they haven’t reached the What’s New? docs yet). One is the implementation of PEP 397 — a Python launcher for Windows, conceived by Mark Hammond, with implementation work by Vinay Sajip and worked up into its final form by Martin von Loewis. The other, implemented by Brian Curtin, is the addition of python.exe to the system PATH. This one is a long-standing gripe especially for novice users who can now just type “python” at the command prompt and get the latest version up. In fact, the PEP 397 launcher makes this perhaps less important but it’s still good to have the option there in the installer.

I’m trying to help along a couple of changes to the Win32 implementation of some os pieces under the guise of bugfixes, but even if I don’t get them past the eagle eye of the release manager, this’ll still be a version to look forward to.

1 Comment so far »

  1. René Leonhardt said,

    Wrote on July 5, 2012 @ 10:42 am


    I am a freelance Python developer from Germany, Python 3.3 seems to be shaping up to be the best Python 3 release ever!

    But with each project using Python 2 for new or old code bases I am wondering how many more years it will take until Python 3 will be finally ready to use or migrate to (even Django has no stable support yet):

    Wouldn’t it be better to postpone Python 3.3 to support i.e. Twisted with all developer power you can spare? Many Twisted users are already looking at modern alternatives like node.js.

    JavaScript world domination with billions of installations is not easy to “fight”, each Python 3 release should at least include an improved 2to3 (why still no GUI?), better Unicode support and one big library release with Python 3 support.

    Are CPython core developers helping to improve pydev in Eclipse Juno?

    My other big concern is mobile apps.
    When will more CPython core developers better support mobile OSes, at least Android?

    Why not push Jython development to 3.3 in a few months and make a real micro standalone jar?

    Why no help to create a Python 3 tinypy?
    (Python finally running inside the browser *cough*)

    Why no diet for the fat SL4A layer?

    I sincerely hope at least the new postponed BlackBerry 10 (product features are looking great, but RIM is dying, thank you Apple) get a decent Python 3.4 support, not to mention other mobile OSes like WebOS.
    At least Mozilla is using Python 2.7 - to debug Firefox OS ;-)

    Python 3 support for Google App Engine?

    When will CPython developers start to support PyPy development seriously?

    I do not mean for the CPython developers to make all the work themselves but spend much more time to help or at least listen to the developers of the most important Python platforms and libraries.

    May Python live long and prosper, my favorite programming language (besides JavaScript)

Comment RSS · TrackBack URI

Leave a Comment


Sign in with your OpenID ?


Name: (Required)

E-mail: (Required)