[Self-interest] Self implementation in Python

Luke McNeil lukemcneil61 at gmail.com
Wed May 18 14:25:41 UTC 2022


Hello,

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.

-Luke

On Tue, May 17, 2022 at 1:31 PM sin-ack <sin-ack at protonmail.com> wrote:

> Hey everyone,
>
> 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 <lukemcneil61 at gmail.com>
> wrote:
>
>
> > Hey everyone!
> >
> >
> >
> > 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!
> >
> > https://github.com/pinneyja/self-interpreter
> >
> >
> >
> > Thanks,
> >
> > Rose-Hulman Self Interpreter Team
> >
> > (Nathaniel Blanco, Achintya Gupta, Luke McNeil, Jacob Pinney)
> _______________________________________________
> Self-interest mailing list
> Self-interest at lists.selflanguage.org
> http://lists.selflanguage.org/mailman/listinfo/self-interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.selflanguage.org/pipermail/self-interest/attachments/20220518/671b93b4/attachment.html>


More information about the Self-interest mailing list