Which kicked off with a bang with Ian Piumarta’s COLA family/project. It seems he has distilled the machinery required to implement objects with late binding into a half dozen operations and a couple of “things”. Then, starting at this level begins building back up to existing dynamic languages – but since everything is implemented in a tiny kernel of primitives, the results are tiny and profound.
After that talk, many of the other talks were just dull and seemed so last century. For instance, the talk on PyPy, a Python implementation written in a subset of Python with code emitters targeting C, Java, and .NET, felt like a huge regression – Squeak did that 10 years ago – now COLA seems to be the next step while PyPy seems to be going over old ground. In fact, it seems the COLA strategy is likely to yield a smaller, faster, and more portable implementation with more powerful introspection.
It would be rather impressive if Squeak had a .NET code generator ten years ago.
Adding more backend targets doesn’t seem like progress. Squeak already runs everywhere.
I’d be more interested to see what a python on COLA implementation looks like. It might be the shorter path.
Yawn. PyPy is not about generating code for different backends.
The interesting parts are in the JIT generation, the handling of
parallellism, the flexibility and plugability of the implementation.
This was in the talk, but either it went over your head, or you
had already filed PyPy as uninteresting and just ignored it.
Or I had to take an important phone call and came back into the talk late. Thanks for giving me the benefit of the doubt though.
Still, it looks like you’re retracing the path of Squeak. So what’s truly new about it?
I think it is a good exercise to write the entire system in itself – this is where Smalltalk gets much of its power. Hopefully, Python will benefit similarly. But I’m still more interested in seeing how it would work out if you started with the COLA environment. I’ve already seen what can be done with the Squeak/Slang Python/RPython approach.