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:
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]
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
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";