What was really interesting about Self was its optimizability - they were able to implement a Smalltalk on Self that was much faster than the contemporary Smalltalk systems. The impression I got from poking around at Self was that there was a class/inheritance system informally approximated in the prototypical relations of the objects and traits, but that doesn't mean you can't formally define one.
For anyone curious, I recommend this talk [0] by David Ungar, one of Self's creators, that explains the history, philosophy, successes, and failures of the Self project. It's a shame more didn't get done with it (though V8, arguably the most important language runtime, is very similar). Someone has even been making a Zig version of Self recently [1].
For anyone curious, I recommend this talk [0] by David Ungar, one of Self's creators, that explains the history, philosophy, successes, and failures of the Self project. It's a shame more didn't get done with it (though V8, arguably the most important language runtime, is very similar). Someone has even been making a Zig version of Self recently [1].
[0] https://www.youtube.com/watch?v=3ka4KY7TMTU
[1] https://sin-ack.github.io/posts/zigself-01/