Cameron Laird's personal notes on Stackless Python

Stackless Python is one of several interesting alternative implementations of the Python programming language.

Stackless has its own Web home.

Stephen Figgins does an excellent jobs of describing the state-of-the-implementation in his February 2002 "Stackless Reincarnate".

Christian, on 31 December 2001: "I hope to make it simpler, split apart Stackless and optimization, and continuations are no longer my primary target, but built-in microthreads. . . . What Python needs is a secure mechanism to switch frame changes at certain times." On 20 January 2003: "Stackless focuses on tasklets and channels, now."

Documents

Key Stackless writings include:

Programming constructs

[pointers within documents above]

Continuations

In 1994 (? earlier?), Steven Majewski was designing an implementation of Python that supported continuations. As part of that research, he reported back to Guido, Tim, and others this summary of continuation theory.

[Schemers emphasize that language's two decades of experience with continuations.] [But compare with Smalltalk control flow ...]

Co-routines

In reflections on his understanding of control constructs as of 1994, Steven Majewski wrote me that
Knuth made the distinction between full coroutines and what he called "semi-coroutines" . Icon has both co-expressions and coroutines, but although the language manual made it clear when you would use one or the other, it didn't stress the foundational difference. ( co-expressions or generators in Icon are Knuth's semi-coroutines. )

Coroutines are fully symmetrical -- control is explicitly passed from one routine to another. Semi-coroutines are asymmetrical -- they always return to their caller ( with a suspended state. ).

Generators

People

Along with the roll-call that leads off my "Introduction to Stackless Python", there are several other contributions to recognize:

Prospects

"Some sort of resolution to Stackless Python seems likely for 2.1."

[Explain Stackless and Palm. Also ...]


Cameron Laird's personal notes on Stackless Python/claird@phaseit.net