Hi there! Russell Allen asked me to join the mailing list and let people know about this, so here I am.
ZigSelf is an implementation of Self in the Zig programming language. It's not an exact implementation of the original VM and I have taken a few creative liberties with it. The language can't do much at the moment, since I just started out with it and work on it in my free time. It has a REPL mostly implemented in itself though (minus the evaluation :^). It also doesn't have a JIT or bytecode just yet, as I want to get the language stable before I start working on something like that. It is an eventual goal, however. My current goal is experimenting with an actor model similar to Erlang's, as I think the message passing-based communication there could mesh really well with the message passing-based programming paradigm that Self already uses.
If you're interested, the project is here: https://github.com/sin-ack/zigself
Hi sin-ack,
I am really impressed by what you're doing and following your progress with great interest! What you already came up with looks like a very solid and elegant approach, well done :D
If I'm getting it right you're currently trying to build a monolithic SELF implementation where the compilation process is implemented in the part written in Zig. I've seen a similar approach before, and even though this is an elegant approach for bootstrapping SELF quickly you might run into some issues if you want to tweak the language later on. I'd be curious to know how your implementation is going to handle this. Could a compiler that's written in SELF itself work out for you?
Also, regarding the infamous "loader" and "copy down mechanism": I have found a few elegant ways to avoid having to copy all the important slots to the children - they of course diverge a bit from the standard, but IMO it's a nice way that feels a lot more "SELF-like" and is a lot less work to implement - if you're interested, I'll be happy to talk to you about that :)
SELF's really good for message passing, and it's interesting that you're mentioning Erlang. In my mind, these languages have a lot in common, and in my last post on this list [1] I was mentioning something similar. Might be related.
Thanks a lot for letting us know about your project!
Regards, Eric
- [1]: http://lists.selflanguage.org/pipermail/self-interest/2021-December/004908.h...
self-interest@lists.selflanguage.org