Cameron Laird's personal notes on varieties of Python implementation
I started this page in 1998. Finally in 2007 I began to
move its content to the
Wiki; look there for the latest information. Until
the transition is complete, what follows was, at least,
correct at one time:
Multiple implementations process the Python
computer language. Those coming from
Java, C, FORTRAN, and
so on might find this unremarkable; it's a striking contrast,
though, with Python's most immediate peers:
Perl,
Ruby,
Tcl,
... Eventually I'll analyze the dynamics of this phenomenon.
In the meantime, I intend to catalogue the diversity:
- "ActivePython
is ActiveState's
quality-assured binary build ..."
- "berp is an implementation of Python 3, written in Haskell."
- CPython is Guido
van Rossum's
reference Python [mention version prospects]
- deeply embedded
python ...
- Diet
Python
- Emscripten
experimentally translates the C of CPython to JavaScript (to
the unholy extent of supporting the ZODB Webscale Edition
monstrosity)
- Enthought's
"Enhanced Python"
offers even more "batteries" than usual, including
packages for GUI construction, scientific programming,
persistence, visualization, and more.
- Pyrex
("It's not full Python but it's
close", in the words of one colleague)
is interesting enough to deserve an entire article of its
own. I hope to write it in 2004 [also be aware of the related
Cython]
- Neil Schemenauer's
garbage-collected
Python
- IronPython
[explain; same Jim as with Jython; ...]
- Jython [explain; admiration for achievement of
Jim Hugunin and Barry; performance possibilities]
- Movable Python
- Nuitka shocks me.
- Numba is important
- psyco and pyrex (and prothon?)
- "PyMite
is a flyweight Python interpreter written from scratch to
execute on 8-bit microcontrollers as well as desktop computers..."
- PyPy is really exciting ... [explain]
- Shed Skin
is "an experimental Python-to-C++
compiler".
- Skulpt is an
in-browser implementation. [So is Pyjamas.]
- SLOPPY
- I've organized a separate page for
Stackless Python.
- John Max Skaller aims
Vyper at
... [explain] [OCaML] I
"It
adds tail calls, list comprehensions,
lexical scoping, full gc, and pattern matching to
Python."
- Will Ware implements
microthreads.
After
earlier independent experiments, he's now folded his
efforts on top of
Stackless. As of
Leap
Day 2000, task
switching is not yet pre-emptive. Stackless 1.1 includes
a per-thread scheduling hook that simplifies this fix.
Warren Postma and other control programmers like the
microthreads project for the constraints it should give
on thread latency.
- As part of the .NET effort, Mark Hammond and colleagues
have re-implemented
Python
in C#.
- [other]
- a separate but related topic is the gaggle of packages
written for Python that implement DbC,
multi-methods,
functional programming, constraint-based programming, ...
- a special topic,
of particular interest to me, is "slenderized"
Pythons that fit in harsh environments, including
- this FTP
directory of generations for MS-DOS, OS/2, and so on;
- Jean-Claude Wippler, Jeff Senn, Brian
Lloyd and others have worked on tinyPython. One approach is
to exploit "executable compressor"
UPX:
"This gets python15.dll down to 220K and seems to
work for me";
- [Explain Pyco
and PythonD];
- Pippy is Python
for the Palm;
- [museum]
- "ShedSkin
is a Python -> C++ compiler (or translator) written in
Python, created by Mark Dufour."
Cameron
Laird's personal notes on varieties of Python
implementation/claird@phaseit.net