Just wanted to give a quick update on where I am (<hint>only me
still</hint>) on the Spry project. I am taking the liberty to post on
squeak-dev since I hope Squeakers find it interesting, especially the
small movie below :) I also have some ideas on Squeak<->Spry interop, if
anyone is interested - catch me on chat.
I am right now trying to nail down a few language level things, and
finish the manual. The manual is up on the site and is fairly complete
now (although needs a few rounds of polish):
But... the most interesting part to tell about is probably the fact that
Spry is taking its first steps with a user interface! Unless you count
the command line REPL Spry has had for a long time. Or the "spry REPL in
a browser page" that you can also find on the website (that is actually
the real Spry VM compiled to js).
Because it shows a truly *live* experience, just like traditional
Smalltalks offer. The code we type in is parsed and evaluated live and
the IDE itself *is written in Spry* (not Nim). This makes it just as
malleable as a Smalltalk environment.
To make this I have selected the excellent C library called libui:
The OO mechanism including polymorphism in Spry is still being worked on
- so naming for some of those things are needlessly messy (to make each
unique), but apart from that it's very straight forward.
NOTE: There is also a Nim wxWidgets wrapper, a gtk2 wrapper and a gtk3
wrapper. But... I wanted native on all 3 desktops and libui looks MUCH
easier and lightweight than wx.
With that VM module included, we can finally look at the code for the
IDE shown in the movie:
So what we have are Spry code blocks (they are closures) that gets run
as callbacks called from the C library. Those of you with a bit of
history knows this has been a truly sore part of Squeak through the years.
And yes, this means we run in libui's event loop which we enter at the end: