Tuesday, January 13, 2009

Apologia

Here’s a quick update on the status of the Newspeak prototype release. If anyone is keeping score - I had said we’d put something out in the first week of January 2009. So we’re behind schedule. I apologize, but what are you going to do - cut my funding?

Nevertheless, we will be putting a prototype out soon. I’m holding off so that a few small things can be added.

In the meantime, I wanted to take the opportunity to say a bit about the prototype. Obviously, due to our reduced circumstances, it is a lot less ambitious than I had once hoped.

We do have a native GUI binding on Windows; I had hoped to have native GUI bindings for Mac and Linux, but that will depend on future open source contributions. You can of course run the system on those platforms, but you’ll have to live with the Morphic binding for now.

The language itself remains incomplete as well - but the key features are there. I expect to rev the syntax and add the missing features (like object literals) over time. One of the reasons these features have been delayed is that I want to add them in the context of a completely new compiler. Such a compiler will also make it easier to do ports - e.g., Newspeak on V8.

One of the biggest deficits is the lack of libraries written in Newspeak. We continue to rely heavily on the existing Squeak libraries. We have made some progress on this front, largely through the efforts of some volunteers who got early access to the system. I want to take this opportunity to thank Yardena Meymann, David Pennell and Stephen Pair for their work on the library port. They are all busy professionals who were willing to take the time to do something concrete to help move Newspeak forward. I hope that we’ll see a lot more of that after the release!

What we’ve been doing is porting some of the core libraries from Strongtalk to Newspeak. These libraries have several important advantages: they are small, yet complete enough to run a real system; they are blue book compatible (give or take), so we have a good chance of replacing our uses of Squeak code with them, without excessive disruption; they are quite cleanly written; they have type annotations; and, it so happens, they have a liberal license.

On the other hand, these libraries were not purpose built for Newspeak; no thought has been given to security, the designs do not leverage features like mixins as much as one might etc.. Still, they provide us the with the most realistic path to getting a small stand alone system in the foreseeable future.

This library code will not be anywhere near complete and integrated when we put out the prototype. But it whatever we have will be available, and we’ll move on from there.There are any number of other things lacking, and no doubt many will be eager to point them out. However, that scarcely matters. What matters is the potential this system has. It’s being put out, so those with the imagination, sophistication and, above all, taste to appreciate it can start using it and contributing to it - eventually realizing that potential.

So for that small elite that has shown interest and appreciation for Newspeak so far - thanks, and hang in there. It will be available, Real Soon Now :-)

The spec calls for both class literals and object literals. The later are a lot like Javascript object literals, and also a lot like Java anonymous classes - but not exactly like either.

Unlike javascript, Newspeak is based on classes. So a Newspeak object literal is an instance of a class- albeit an anonymous one. However, unlike Java anonymous classes, Newspeak object literals close over their environment (much as Javascript object literals do).

There is a lot of significance to this construct. It allows clean modeling of namespaces, and natural serialization/deserialization of applications.

A detailed presentation will wait a while - I'd rather discuss it when it's implemented. I hop ethis is helpful for the time being.

You are absolutely right. I guess I am suffering from feature creep. Every time I think we're done, it seems we are so close to having another piece of the system ready. So here is an update on where we are:

We have a Hopscotch based GUI for unit testing.

We have tweaked the source control interface so people who download the system can use it (used to only work for us - long story). THis should allow you to get updates over time from within the IDE.

The Hopscotch debugger is almost complete. It already does more than a mainstream debugger, but we want all the stuff you'd expect from a Smalltalk like system.

I am working on a fairly extensive tutorial.

I swear these are the last two things we put in before the release. The first 3 are a milestone, because they imply one can work (in Windows) without using Morphic at all. That has been a long term goal, so we can bootstrap a morphic-free system.

As for when - well I did say early January, didn't I? I hop eit wil be this week, but you can take that with a grain of salt.