One clarification by Guido up front: lambda is not going away!
Guido expects a lot of tension between him and the rest of the developers on python 3000. There are a lot of things people want to change or add. Everyone has his own pet pieve that he wants to add or change and python 3000 brings that out.
Python 3000 is the only release in which there will be incompatibilities and breakage. They won't invite breakage, but it will be allowed. Some things can't be fixed without incompatibilities and this is the time to change those. Fix early design bugs. Old style classes will be removed. Old style integer division. Stuff that has been deprecated for quite some time.
python 3000 == python 3.0 == py3k
There has to be some amount of process, otherwise we're lost. There are too many proposals competing for time: this won't be perl 6. When do we want py3k to be ready? How long are we going to maintain 2.x and 3.x? How do we migrate? Do we backport py3k features? We can't freeze 2.x and let it die without support.
First alpha: not before 2007. Final release probably a year after that. Probably there'll be a quick 3.1 and 3.2 afterwards. 2.x and 3.x will be developed in parallel. 2.6 will come, probably before 3.0. 2.7 is likely, may contain some backports from py3k.
How incompatible can it be? New keywords are allowed. .keys()
and so
isn't going to return lists anymore but iterators instead. All strings
will by unicode and there'll be a mutable "bytes" data type if you
need 8-bit byte/string like stuff. Binary file IO will be changed (has
to do with bytes and unicode).
Some examples of things that won't happen is that it'll stay
dict.keys()
instead of only dict.keys
. Also the operator priority
won't change.
A completely mechanical migration of existing code won't be doable. Some things just cannot be recognised. The most likely approach will be to use a pychecker-like tool to detect some 80% of the changes and to create a version of 2.x that warns about doomed code.
Some things that won't be in py3k. No programmable syntax/macros. No syntax for parallel iteration (use zip). Iterating over a dictionary gives you keys instead of key/value pairs, that will stay that way.
PEP 3100 has a large list of items that are considered to be included in py3k.
There will be an new standard IO stack. C stdio has too many problems. You don't know how many bytes you have buffered, for instance. The new bytes/str implementation gives an opportunity to fix all this.
Print becomes a function instead of a statement. Print-as-statement is a barrier to evolution of your program and of the language (see link in PEP3100).
My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):