Thanks for taking the time to check our system out. You are correct that we do not implement mirrors just yet. The most obvious place that mirrors are useful is in creating a GUI because you need to know things like all of an object's slots. To make our GUI we made our own primitives like "_GetDataSlotsAsVector" to do this reflection work for us. This should not be a final fix, but just made it easier for us to get a working GUI in time.
In our project, efficiency and garbage collection was not really of focus. We wanted a way to easily run Self code, and if you are just writing simple programs then the drop in efficiency from doing AST interpretation is not too bad. That being said, we would of course not mind a speedup in building up our Self world on startup.
The only way that we really use the Transporter in our system is to read in modules that have been filed out from the real Self. It would be cool to get to the point where you could develop a module in our system, file it out, and then file it in in the real Self. Maybe a similar thing could even be done for snapshots. Our Self system could save its state into a snapshot which could then be opened by the real Self to get to the exact same state. I'm not sure how these snapshots are stored, but this seems like it would be a lot of work. To answer your question, I think we would want to maintain full compatibility with the original Self's Transporter system.
On Tue, May 17, 2022 at 1:31 PM sin-ack email@example.com wrote:
This looks pretty nice. Playing around with it a little, it was really cool seeing the original Self VM files load. I tried to get a mirror via `object asMirror', but it seems like `_Mirror' isn't implemented just yet. :)
Your AST parsing looks pretty well done. It actually looks like my first attempt at a Self interpreter, only with less memory management stuff :) I'm curious to know whether you would want to switch to a bytecode interpreter in the future or keep it as a pure AST interpreter for ease of understanding.
As far as I can tell memory management/GC is a non-goal to keep the interpreter fully portable. Is this correct?
I checked out the GUI and it's already pretty nice as it is. Buttons could benefit from being less... large :), but it's already really usable (and more of a GUI than I came up with).
Also, do you intend to maintain full compatibility with the original Self and its Transporter system, or are you willing to improve upon it later down the line?
Hoping you decide to continue this project and looking forward to further developments!
------- Original Message ------- On Tuesday, May 17th, 2022 at 6:40 AM, Luke McNeil firstname.lastname@example.org wrote:
We’re a team of student engineers from Rose-Hulman Institute of
Technology that’s been working on a Python implementation of Self for the past academic year. We began developing this system since the Self virtual machine is currently unable to be easily run on most modern operating systems (without setting up a virtual machine to emulate older 32-bit operating systems).
Our system is designed to parse and interpret Self inputs in a similar
manner to the Self environment and virtual machine. The system comes with its own GUI framework to demonstrate its features that is extensible by users, and the framework itself serves as a proof-of-concept for implementing Morphic-related features in the future. The interpreter’s implementation is bootstrapped, meaning that higher-level features like lists and strings are directly imported from their respective Self modules, which we file out from the original Self system.
We hope that this project will serve not only as a useful educational
tool for introducing engineers to alternative programming paradigms, but also as a convenient environment for Self development. If you’re interested in exploring our system further, we’ve prepared a video demo for your convenience (here). You can also visit our repository on GitHub below. We welcome your thoughts and feedback!
Rose-Hulman Self Interpreter Team
(Nathaniel Blanco, Achintya Gupta, Luke McNeil, Jacob Pinney)
Self-interest mailing list Selfemail@example.com http://lists.selflanguage.org/mailman/listinfo/self-interest