[LWN Logo]

From: Christian Tismer <tismer@appliedbiometrics.com>
Subject: Stackless Python 0.3
Date: Tue, 13 Jul 99 15:39:13 GMT

ANNOUNCING:

               Stackless Python 0.3
           A Python Implementation Which
             Does Not Use The C Stack

What is it?
A plugin-replacement for core Python.
It should run any program which runs under Python 1.5.2 .
But it does not need space on the C stack.

Why did I write it?
Stackless Python was never written before (afaik), since it
was said to be impossible without major rewrites of core Python.
I am proving the controverse:
It is easy to write, just hard to think.

Recent changes:
Version 0.3 has been written while developing a continuation
module which is about to ship. A couple of enhancements and
changes were necessary to make continuations fly. Some drastic
changes to frame management have been made. Stackless Python
is now also able to keep track of recursive interpreter
incarnations and to detect/resolve possible collisions
between their frames. As a proof of concept, continuationsmodule.c
will ship in a few days.

Who needs it?
At the moment, this is only useful for C programmers
who want to try certain new ideas. Hardcore stuff.
It allows to modify the current execution state by
changing the frame stack chain without restictions,
and it allows for pluggable interpreters on a per-frame-basis.

The possibilities are for instance:

Continuations, with which we will build Coroutines and Generators

Restartable exceptions and Persistent execution state
are the next topic to think about. They are possible.

Stackless extension modules can be built. The new builtin
stackless "map" function is a small example for this.

Coroutines are able to run at the speed of
a single C function call, which makes them a considerable
alternative in certain algorithms.
This is no longer a speculation since I have working
coroutine prototypes, written with continuations.

Status of the project:
Stackless-ness has been implemented and tested with pystone.
pystone works correctly and is about 10 % slower than
with standard Python.

What I need at the moment is
- time to do the right design of coroutines on top of continuations
- your input, your testing, critics and hints.

Some still rough documentation is available at
http://www.pns.cc/stackless/stackless.htm

Source code and a VC++6.0 build for Windows can be found
from the document or directly from
ftp://ftp.pns.cc/pub/stackless_990712.zip
ftp://ftp.pns.cc/pub/stackless_990712_win32.zip

cheers - chris

== 
Christian Tismer             :^)   <mailto:tismer@appliedbiometrics.com>
Applied Biometrics GmbH      :     Have a break! Take a ride on Python's
Kaiserin-Augusta-Allee 101   :    *Starship* http://starship.python.net
10553 Berlin                 :     PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint       E182 71C7 1A9D 66E9 9D15  D3CC D4D7 93E2 1FAE F6DF
     we're tired of banana software - shipped green, ripens at home

<P><A HREF="http://www.pns.cc/stackless/stackless.htm">Stackless Python
0.3</A> - a version of Python 1.5.2 that does not need space on the C
stack.  (12-Jul-99)

-- 
----------- comp.lang.python.announce (moderated) ----------
Article Submission Address:  python-announce@python.org
Python Language Home Page:   http://www.python.org/
Python Quick Help Index:     http://www.python.org/Help.html
------------------------------------------------------------