PROTHON, a classless Python
Mark Hahn
mark@prothon.org
Wed, 24 Mar 2004 22:25:08 -0800
Ben Collins and I have developed a new interpreted object-oriented language
very closely based on Python, that is Prototype-based, like Self
(http://research.sun.com/research/self/language.html) instead of class-based
like Python.
I have named the language Prothon, short for PROtotype pyTHON. You can
check it out at http://prothon.org.
The prototype scheme makes object oriented computing very simple and
complicated things like meta-classes melt away. Once you get used to
prototypes, classes seem very ancient and old-fashioned. You can inherit
data as well as methods and you can switch prototypes (think "types" or
"classes") on the fly.
Prothon is pre-alpha, but runs well enough to give it a spin. Basic types,
the File object, importing, packages, and the Re module are ready to try.
It runs on Linux/Unix and Windows.
Obviously Prothon is not Python compatible, so I have taken the liberty of
implementing many changes that have been imagined for the almost mythical
Python 3.0. Right now I've made decisions unilaterally, but I'm not
planning on freezing language decisions until 7/04, so get on the Prothon
mailing lists and make your opinions known.
Since the Prothon interpreter has been written from the ground up, we've had
the opportunity to make it industrial-strength. We feel this is very
important for high-end hosting applications, and that this is a current
weakness of Python and it's GIL. Prothon has no GIL. Here are some
interpreter features:
- Uses native OS threads, even multiple interpreters can run at once on the
same objects.
- Locking is done at the object level with shared read locks and exclusive
write locks.
- No recursion limits, Prothon is stackless.
- Garbage collection is mark-and-sweep in seperate thread.
- C coding is simple. Macros simulate coding at Prothon level. (No
reference counting!)
- Ints are 64-bits, internal architecture is all 64-bit.
- Built on Apache Portable Runtime (APR) for stability, ease in porting, and
eventual integration with Apache.