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
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
- ui(?) occasionally grabs all of memory. This crashes Self, losing any
- 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
- 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
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.