Print

Python Roadmap

by Cameron Laird
10/17/2000

Related Articles:

Programming Stackless Python

Introduction to Stackless Python


More from the Python DevCenter

How does Stackless Python fit into Python's future? To understand that, we first need to see where the Python programming language is headed.

Lots of news

2000 will have been an eventful year for Python. The biggest news so far has been the westward shift of its developmental center-of-gravity.

Guido van Rossum conceived Python at the end of 1989 while a researcher at the National Research Institute for Mathematics and Computer Science (Centrum voor Wiskunde en Informatica--CWI) in Amsterdam. Since 1995, the not-for-profit Corporation for National Research Initiatives, headquartered in Reston, Virginia, has employed him. At the end of May, though, "open-source applications portal" BeOpen.com hired van Rossum and several colleagues to construct PythonLabs within the Santa Clara-based BeOpen Network. PythonLabs headquarters remains in Reston.

At the engineering level, version 1.5 in its various releases (1.5.2 was the last release of Python 1.5) remains current. There have been two recent follow-ups to 1.5. One is called 1.6, released in it's final form last month. The other is designated 2.0, and was just released this week. Many working programmers will find 1.6 and 2.0 indistinguishable for daily work. Andrew Kuchling, who twice a month summarizes traffic on the python-dev mailing list where deep issues are worked out, puts it this way:

1.6 is the Python CVS tree at the end of May, fixed so that Unicode and SRE [a regular expression alternative] both work and are up-to-date. 2.0 includes all the development since May, which includes new modules, most of the serious language changes such as list comprehensions, and more fixes.

Why have two versions so close in appearance with such different labels? A tangle of reasons, including the relocation from CNRI to BeOpen, led to this slightly confusing resolution. While the inner circle struggles with licensing and numbering complexities, the highlights for external developers are simple:

  • Python is as free as ever. It can be used, modified, copied, and so on, without restriction. Consult a lawyer as appropriate.
  • The biggest advantage of Python 1.6 and 2.0 over 1.5 is their complete support of Unicode. Unicode's prominence in XML standards makes this enhancement a crucial one even for programmers with no obvious interest in "internationalization." Also, the core 2.0 distribution now includes several useful new library modules which manage zipfiles, Unicode conversion, memory-mapped files, and more. Other changes are mostly technical: details of type usage, display formats of numbers, and other relatively minor matters.

Python 1.6 and 2.0 are not Stackless. Work at different levels has already begun on both 2.1 and what is lightheartedly called "Python 3000." Python 2.1 will be the evolutionary follow-up to 2.0. Python 3000 will be a substantial rewrite of Python, perhaps the largest one yet, and likely will appear in 2002 or later.

Whether 2.1 includes Stackless or not remains an open question. Should 2.1 incorporate Stackless? As Introduction to Stackless Python, the first article in this series, explained in more detail, not even that most basic question has been decided yet. Stackless' fans argue that its inclusion is an easy choice. Stackless Python is faster, more capable, and mature, because it's been used for many months in "mission-critical" applications already in production. A change to stacklessness is a "pure win," with no significant costs.

On the other side are two main arguments:

  1. Van Rossum is conservative. That is, he's careful with Python's development. There's no denying that Stackless represents a significant change to one aspect of Python's implementation. Van Rossum simply needs time to digest all its implications, and determine whether it's truly safe for his language.
  2. JPython presents difficulties.

JPython requires a bit of explanation.

Pages: 1, 2

Next Pagearrow