Albeit this experiment did fail, it IMHO has brought Parrot a lot further. Valuable interals like integer->bigint promotion are vastly implemented.
We'll have to sort out, what we will keep in core and what should be moved into a Python or maybe a general HLL support library.
But before starting over, we will have to go through some of the issues that arise, when HLL borders are crossed. E.g.:
PyString + PMC := concat PyString % PMC := sprintf
And there is of course the question, if we should really be "bug"-compatible
>>> False=42 >>> if False: ... print "aha", False ... aha 42
Have fun, leo
The Pie-thon state - 5
17.07.2004 Pie-thon 73 - 76 Iterators generators, slices cleanup. Implement SET_SLICE and DEL_SLICE. 17.07.2004 Pie-thon 77 vtable cleanup, floor_divide Removed tons of unused vtables concerning BIGNUM. All these vtable entries assumed that BIGNUM is a native Parrot type, which it isn't. BIGNUMs a PMCs. Create a new floor_divide MMD entry. 19.07.2004 Pie-thon 78 - b6.py Adapt perlhash.fromkeys() to new slice creation scheme. b6.py is running - fast. 19.07.2004 Pie-thon 79 Better var arg handling of foo(*arg). 19.07.2004 Pie-thon 80 parrot/pie-thon.pl run this piece from b2.py: def izip(*args): args = map(iter, args) while 1: yield tuple([x.next() for x in args]) def main(): for x, y in izip(xrange(10), "abcdefghijklmnop"): print y, print if __name__ == '__main__': main() 20.07.2004 Pie-thon 81 - 82 Towards objects and attributes. Hack pie-thon.pl to do something for ooops[1]. 21.07.2004 Pie-thon 83 - 85 More object bits. Get generator method in object running. 22.07.2004 Pie-thon 86 Fixed a bug in Parrot exception code. After reentering the runloop 3 times, nested exceptions caused a SEGFAULT. 22.07.2004 Pie-thon 87 b2.py runs. And as promised it runs fast. More then double the speed of Python - with an unoptimized Parrot build ;) 22.07.2004 Pie-thon 88 - 90 Approaching b3.py: unary_negative in pie-thon.pl. Fix various ResizablePMCArray bugs. Implement the __new__ aka "CONSTRUCT" functionality, which creates an object for a given class and arguments. 23.07.2004 Pie-thon 91 - 92 Provide a builtin __new__ as default fallback. Parrot got trace output for method call resolution. Pie-thon 93 Parrot's native type vtable functions and Python's everything is a PMC objects are fighting, if a vtable function like "__get_string" is overridden. The vtable wants a native type like STRING* while the external function delivers a PMC. Parrot now extracts the native type it needs from the PMC, if the return value signature of the function indicates a PMC. 23.07.2004 Pie-thon 94 - 95 b3.py is running. It reveals a DOD bug though, so GC is disabled. This concludes the effort to implement the Pie-thon benchmark for OSCON, because there isn't any chance to implement the needed bits for b0.py in the remaining time. Four of seven benchmarks are running: b1, b2, b3, and b6. b5 is done partially. Three of these are faster on Parrot, but e.g. while b2.py is running 3 times the speed of python, it takes just 0.2s here on a Pentium 600, which makes it hard to say, what's faster for these test collection. The benchmarks are mainly testing the speed of builtin functions, which are of course mature and optimized in Python, while a lot of the builtins just didn't even exist in Parrot a month ago. When it comes to just running arithmetic code, like in b2.py, Parrot is a lot faster. I'd estimate that Parrot will run at about twice the speed of Python or Perl5 on average, finally. [1] ooops: object oriented obfuscation - pythonic sense