I too just love Self 3.0!
The language is exceptionally pretty... I really like the default semantics of sending a message to self for example. The concepts of slots are simple yet powerful. The orthogonal nature of the language is amazing.
What I'm doing:
I've been trying to implement a program to play the pencil and paper game of 'sprouts'... to see how fast it will go, and generally evaluate Self. In terms of development speed it compares rather favourably with C++ so far, but that isn't saying much!
My Comments on Self:
The UI is greatly improved, usably fast, though could be faster on my SUN IPX. The 'type-in' windows are great! The slot adding features need further thought, as they are usually slower that the type-in method. I felt the animations were OK, but I wanted more speed and switching them off improved the speed nicely. However it lost me information, such as the waggling when you produce the same answer to two different evals.
The debugger is really, really powerful. I wish it was slightly more integrated with the UI, but it's very good in any case.
The Bugs I have seen with the Beta release are:
- ui occasionally crashes, when I try to move things fast, with an error like 'no myUI slot' or something. Some kind of concurrency bug...?
- ui occasionally hangs, apparently when moving an object on the screen. Killing the process and typing 'ui start' is an apparent work around.
- ui(?) occasionally grabs all of memory. This crashes Self, losing any changes.
- ui pauses for up to 5 minutes apparently at random (if I run 'jobs' on the shell window I started on, that starts OK then hangs on the suspended processes till the end). It doesn't seem to be garbage collection, but then my _Spy doesn't work half the time... ;-)
- ui sometimes stops buffering keyboard presses. Have to hold the keys down to get anything in. It seems to be linked to moving large (1/3 screen height) objects around, or when the screen is very full(?)
- something like typing '_Spy: true' to 'lobby' seems to permanently disable the spy feature... haven't quite pinned this down, you may need to exit and read in the snapshot again or something to trigger the bug, but when triggered it persists as long as my snapshoting does.
- I had difficulty removing a descendent of list that is contained in a descendent of a hashed set, e.g. 'remove: first' gave an error that that member wasn't present, until I changed the definition of 'hash' in my descendent... I think perhaps traits collection hash has a bug...
Still, it *is* great fun! Can't wait for the release... my admiration to the team.
p.s. if the team needs info on any of the bugs, ask and I'll try to obtain stack listings etc.