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

June 19th, 2007 § 0 comments

The BDFL has spoken:

Guido van Rossum’s Weblog: Python 3000 Sta­tus Update (Long!): “Here’s a long-awaited update on where the Python 3000 project stands. We’re look­ing at a mod­est two months of sched­ule slip, and many excit­ing new fea­tures. I’ll be pre­sent­ing this in per­son sev­eral times over the next two months.”

Of par­tic­u­lar inter­est to me is the renewed focus on python2.6 as the warn­ing gap between 2.5 and 3k, to quote:

Python 3.0 will break back­wards com­pat­i­bil­ity. Totally. We’re not even aim­ing for a spe­cific com­mon sub­set. (Of course there will be a com­mon sub­set, prob­a­bly quite large, but we’re not aim­ing to make it con­ve­nient or even pos­si­ble to write sig­nif­i­cant pro­grams in this sub­set. It is merely the set of fea­tures that hap­pen 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 sup­port a “Py3k warn­ings mode” which will warn
    dynam­i­cally (i.e. at run­time) about fea­tures that will stop work­ing
    in Python 3.0, e.g. assum­ing that range() returns a list.
  • Python 2.6 will con­tain back­ported ver­sions of many Py3k fea­tures,
    either enabled through __future__ state­ments or sim­ply by allow­ing
    old and new syn­tax to be used side-by-side (if the new syn­tax would
    be a syn­tax error in 2.x).
  • Com­ple­men­tary to the for­ward com­pat­i­bil­ity fea­tures in 2.6, there
    will be a sep­a­rate source code con­ver­sion tool. This tool can do
    a context-free source-to-source trans­la­tion. As a (very sim­ply)
    exam­ple, it can trans­late apply(f, args) into f(*args).
    How­ever, the tool can­not do data flow analy­sis or type infer­enc­ing,
    so it sim­ply assumes that apply in this exam­ple 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 “clas­sic classes” finally bite the dust. The built-in class object is the default base class for new classes. This makes room for a vari­ety of new features.

Yay! I’ve been grind­ing on really learn­ing meta-classes and descrip­tor syn­tax the last week or two for some side projects and this makes me happy.

ps: Vol­un­tary Abstract Base Classes

(Via Planet Python.)

What's this?

You are currently reading Guido van Rossum’s Weblog: Python 3000 Status Update (Long!) at jessenoller.com.

meta