Guido van Rossum's Weblog: Python 3000 Status Update (Long!)

by jesse in ,


The BDFL has spoken:

Guido van Rossum's Weblog: Python 3000 Status Update (Long!): "Here's a long-awaited update on where the Python 3000 project stands. We're looking at a modest two months of schedule slip, and many exciting new features. I'll be presenting this in person several times over the next two months."

Of particular interest to me is the renewed focus on python2.6 as the warning gap between 2.5 and 3k, to quote:

Python 3.0 will break backwards compatibility. Totally. We're not even aiming for a specific common subset. (Of course there will be a common subset, probably quite large, but we're not aiming to make it convenient or even possible to write significant programs in this subset. It is merely the set of features that happen to be unchanged from 2.6 to 3.0.)

Good. Now don't be scared, because he goes on to explain:

  • Python 2.6 will support a "Py3k warnings mode" which will warn dynamically (i.e. at runtime) about features that will stop working in Python 3.0, e.g. assuming that range() returns a list.
  • Python 2.6 will contain backported versions of many Py3k features, either enabled through __future__ statements or simply by allowing old and new syntax to be used side-by-side (if the new syntax would be a syntax error in 2.x).
  • Complementary to the forward compatibility features in 2.6, there will be a separate source code conversion tool. This tool can do a context-free source-to-source translation. As a (very simply) example, it can translate apply(f, args) into f(*args). However, the tool cannot do data flow analysis or type inferencing, so it simply assumes that apply in this example refers to the old built-in function.

You should really go read the full write up - here's a thing I am happy about (other than Abstract Base Classes):

You might have guessed that "classic classes" finally bite the dust. The built-in class object is the default base class for new classes. This makes room for a variety of new features.

Yay! I've been grinding on really learning meta-classes and descriptor syntax the last week or two for some side projects and this makes me happy.

ps: Voluntary Abstract Base Classes

(Via Planet Python.)