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 https://www.youtube.com/watch?v=I8sciM3a8Y0). 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)
Hi guys This is awesome - I love it. It's like an executable spec, it's really clear what's happening.
Do you have plans to do more work on it?
Also, have you had a look at Zig-Self at all? https://github.com/sin-ack/zigself
Russell
On May 17 2022, at 3:40 am, Luke McNeil lukemcneil61@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@lists.selflanguage.org
http://lists.selflanguage.org/mailman/listinfo/self-interest
Hi Russell,
Thanks for the kind words. This project was done as a senior project. At Rose-Hulman, this is a capstone project that a team works on for the entire year. The idea for the project was proposed by Dr. Michael Hewner ( https://hewner.github.io/). As the academic year is coming to an end, this does mean we will no longer be forced to work on it. We really did enjoy it though, so I expect that we will continue adding things in the future. The primary work that could be done next is continuing to add filed out Self modules and primitives that they rely on such as -
1. GUI Modules - If the necessary and rather large list of necessary graphics primitives were written, then we could potentially file in these modules to make a GUI looking just like the original Self interface. 2. Test Modules - These are a bunch of modules written in Self, which tests things about Self. We have our own suite of tests that were developed, but it would be cool to see how we do against these tests. 3. Other Modules - Things like tree or priorityQueue. These should just work, but take some time to import.
It is also possible that another senior project team at Rose-Hulman in the future might pick up this project and continue building.
I did look a little at Zig-Self. I think it might be worth a more thorough look, though, as I'm sure there are many things we could learn from it.
-Luke
On Tue, May 17, 2022 at 3:58 AM Russell Allen mail@russell-allen.com wrote:
Hi guys This is awesome - I love it. It's like an executable spec, it's really clear what's happening.
Do you have plans to do more work on it?
Also, have you had a look at Zig-Self at all? https://github.com/sin-ack/zigself
Russell
On May 17 2022, at 3:40 am, Luke McNeil lukemcneil61@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@lists.selflanguage.org
http://lists.selflanguage.org/mailman/listinfo/self-interest
Just watched the vid, and what a cool and impressive project! I'm honored to see continuing interest in the Self ideas, and hope that the exposure to the them will serve you as you do great things! You can think of them as a fairly pure expression of certain values, but certainly not the be-all and end-all! I'll stop myself from ranting any more! :)
Anyway, huge thanks to the team and the prof!
- David
On May 17, 2022, at 9:29 AM, Luke McNeil lukemcneil61@gmail.com wrote:
Hi Russell,
Thanks for the kind words. This project was done as a senior project. At Rose-Hulman, this is a capstone project that a team works on for the entire year. The idea for the project was proposed by Dr. Michael Hewner (https://hewner.github.io/ https://hewner.github.io/). As the academic year is coming to an end, this does mean we will no longer be forced to work on it. We really did enjoy it though, so I expect that we will continue adding things in the future. The primary work that could be done next is continuing to add filed out Self modules and primitives that they rely on such as -
- GUI Modules - If the necessary and rather large list of necessary graphics primitives were written, then we could potentially file in these modules to make a GUI looking just like the original Self interface.
- Test Modules - These are a bunch of modules written in Self, which tests things about Self. We have our own suite of tests that were developed, but it would be cool to see how we do against these tests.
- Other Modules - Things like tree or priorityQueue. These should just work, but take some time to import.
It is also possible that another senior project team at Rose-Hulman in the future might pick up this project and continue building.
I did look a little at Zig-Self. I think it might be worth a more thorough look, though, as I'm sure there are many things we could learn from it.
-Luke
On Tue, May 17, 2022 at 3:58 AM Russell Allen <mail@russell-allen.com mailto:mail@russell-allen.com> wrote: Hi guys This is awesome - I love it. It's like an executable spec, it's really clear what's happening.
Do you have plans to do more work on it?
Also, have you had a look at Zig-Self at all? https://github.com/sin-ack/zigself https://github.com/sin-ack/zigself
Russell
On May 17 2022, at 3:40 am, Luke McNeil <lukemcneil61@gmail.com mailto:lukemcneil61@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 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@lists.selflanguage.org mailto:Self-interest@lists.selflanguage.org
http://lists.selflanguage.org/mailman/listinfo/self-interest http://lists.selflanguage.org/mailman/listinfo/self-interest
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Very cool! Maybe I didn’t search everything but somehow didn’t find the video of the UI work …
—Randy
On May 16, 2022, at 8:40 PM, Luke McNeil lukemcneil61@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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Cool!! great work!
On Tue, May 17, 2022 at 12:36 PM Randy randy.smith@gmail.com wrote:
Very cool! Maybe I didn’t search everything but somehow didn’t find the video of the UI work …
—Randy
On May 16, 2022, at 8:40 PM, Luke McNeil lukemcneil61@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 https://www.youtube.com/watch?v=I8sciM3a8Y0). 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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Very cool indeed. There's a link to the GUI video on the Github page.
On 17/05/2022 22:36 Randy randy.smith@gmail.com wrote:
Very cool! Maybe I didn’t search everything but somehow didn’t find the video of the UI work …
—Randy
On May 16, 2022, at 8:40 PM, Luke McNeil lukemcneil61@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 (https://www.youtube.com/watch?v=I8sciM3a8Y0)). 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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
_______________________________________________ Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
It was mentioned below, but here is the link to the video describing the UI - https://www.youtube.com/watch?v=FCLnCht6LT8.
-Luke
On Tue, May 17, 2022 at 11:36 AM Randy randy.smith@gmail.com wrote:
Very cool! Maybe I didn’t search everything but somehow didn’t find the video of the UI work …
—Randy
On May 16, 2022, at 8:40 PM, Luke McNeil lukemcneil61@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 https://www.youtube.com/watch?v=I8sciM3a8Y0). 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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
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@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)
This is great.
I’m wondering if it is possible (or sensible) to use pypy/rpython JIT generator?
Bw Stephen
https://morepypy.blogspot.com/2011/04/tutorial-writing-interpreter-with-pypy...
https://rpython.readthedocs.io/en/latest/
On Tue, 17 May 2022 at 18:31, sin-ack sin-ack@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@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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Hi,
if you are interested in rpython, you may be interested in my older and mostly-working implementation of Self-like language: https://github.com/Bystroushaak/tinySelf
The project was later abandoned in favour of java/graalvm version ( https://github.com/Bystroushaak/tinySelfEE ), which I develop from time to time, but it should be still possible to compile it and run for fun.
On Tue, 2022-05-17 at 19:17 +0100, Stephen De Gabrielle wrote:
This is great.
I’m wondering if it is possible (or sensible) to use pypy/rpython JIT generator?
Bw Stephen
https://morepypy.blogspot.com/2011/04/tutorial-writing-interpreter-with-pypy...
https://rpython.readthedocs.io/en/latest/
On Tue, 17 May 2022 at 18:31, sin-ack sin-ack@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@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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
--
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Thanks. These look great 😀 I’m going to look at both today.
Can I ask why you abandoned the rpython implementation?
@Self-interest list: Is there a list of Self implementations?
Thank you to all in this community for keeping this fascinating and important language alive!
Best regards
Stephen
On Wed, 18 May 2022 at 01:18, Bystroushaak bystrousak@kitakitsune.org wrote:
Hi,
if you are interested in rpython, you may be interested in my older and mostly-working implementation of Self-like language: https://github.com/Bystroushaak/tinySelf
The project was later abandoned in favour of java/graalvm version ( https://github.com/Bystroushaak/tinySelfEE ), which I develop from time to time, but it should be still possible to compile it and run for fun.
On Tue, 2022-05-17 at 19:17 +0100, Stephen De Gabrielle wrote:
This is great.
I’m wondering if it is possible (or sensible) to use pypy/rpython JIT generator?
Bw Stephen
https://morepypy.blogspot.com/2011/04/tutorial-writing-interpreter-with-pypy...
https://rpython.readthedocs.io/en/latest/
On Tue, 17 May 2022 at 18:31, sin-ack sin-ack@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@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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
--
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
I've summed most of my reasons here:
https://blog.rfox.eu/en/Programming/tinySelf/Reasons_why_I_decided_to_abando...
On Wed, 2022-05-18 at 08:41 +0100, Stephen De Gabrielle wrote:
Thanks. These look great 😀 I’m going to look at both today.
Can I ask why you abandoned the rpython implementation?
Hi
On 18. May 2022, at 19:23, Bystroushaak bystrousak@kitakitsune.org wrote:
I've summed most of my reasons here:
https://blog.rfox.eu/en/Programming/tinySelf/Reasons_why_I_decided_to_abando...
funny, I thought about doing self in rpython myself in 2012 (https://bitbucket.org/krono/lang-self/src/master/) But it did not come to fruition for several reasons.
If you're actually interested in the GraalVM path, you should probably converse with Fabio Niephaus :)
Best regards -Tobias
On Wed, 2022-05-18 at 08:41 +0100, Stephen De Gabrielle wrote:
Thanks. These look great 😀 I’m going to look at both today.
Can I ask why you abandoned the rpython implementation?
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Stephen De Gabrielle asked on Wed, 18 May 2022 08:41:55 +0100
@Self-interest list: Is there a list of Self implementations?
It would be nice to compile such a list and make it available somewhere on the main language site.
In the last few decades new languages have tended to have a single implementation. Having an open source version that you can download over the Internet and which runs on your computer (PC clone) and operating system (Linux, Windows or MacOS) eliminates most reasons for creating an alternative implementation. Only if you need it to be faster (like PyPy or LuaJit) or smaller to run on embedded devices does the effort make any sense.
Earlier languages had many implementations. Smalltalk-80, for example, took a long time to become officially available and even then only on high end workstations. So people had to create their own: Smalltalk/V (PCs), Little Smalltalk (text-only Unix machines and many microcomputers), SmalltalkAgents (Macintosh), Smalltalk/X (Unix X11), Dolphin, Smalltalk MT, Object Studio, VisualAge and probably many others I have forgotten.
Other people just mixed Smalltalk features with other languages: Objective-C, ObjectPascal/Delphi, Clascal/ObjectPascal, Java, Ruby and so on.
In the same way, I would include in a list of Self implementations languages that borrowed a lot from its features but which are not actually compatible.
Beyond the official implementation from Stanford and Sun and the ones already listed in this thread I can remember:
JSelf by Diego Gómez Deck
https://web.archive.org/web/20080515215555/http://www.consultar.com/JSelf/ (the page is currently missing)
Self for the Java Virtual Machine
tinySelf0 and tinySelf1 by me http://www.merlintec.com/lsi/tiny.html a hand crafted parser in C capable of reading all Self 3.0 sources and a Self-in-Self testing a thread per object concurrency model, respectively
I seem to also remember a mySelf and an rSelf, which are terrible names to search for.
Many languages that are prototype instead of class based claim to be inspired by Self, but I am not sure I would agree in the case of NewtonScript (and Io, which is inspired by it) since they use Lieberman prototypes while Self is more similar to "Smalltalk With Examplars":
https://www.davethomas.net/papers/exemplar.pdf
This explanation and list doesn't seem to make this separation:
https://en.wikipedia.org/wiki/Prototype-based_programming
It is interesting that this list doesn't include ObjectLogo which predates Self and is where I first saw the idea of prototype based programming (it didn't seem that interesting until I saw Self). Kevo is mentioned in the article itself, but is also not on the list.
-- Jecel
There is a place on GitHub for a Self wiki:
https://github.com/russellallen/self/wiki
People can add implementations there.
Wasn't there another Self in Java at one point? dSelf or something like that?
One interesting thing about both zigself and PySelf (for want of a name :) is that they both seek to define a small subset of the Self distribution as a core - booleans, collections, strings, etc.
R
On May 19 2022, at 7:43 pm, Jecel Assumpcao Jr jecel@merlintec.com wrote:
Stephen De Gabrielle asked on Wed, 18 May 2022 08:41:55 +0100
@Self-interest list: Is there a list of Self implementations?
It would be nice to compile such a list and make it available somewhere on the main language site.
In the last few decades new languages have tended to have a single implementation. Having an open source version that you can download over the Internet and which runs on your computer (PC clone) and operating system (Linux, Windows or MacOS) eliminates most reasons for creating an alternative implementation. Only if you need it to be faster (like PyPy or LuaJit) or smaller to run on embedded devices does the effort make any sense.
Earlier languages had many implementations. Smalltalk-80, for example, took a long time to become officially available and even then only on high end workstations. So people had to create their own: Smalltalk/V (PCs), Little Smalltalk (text-only Unix machines and many microcomputers), SmalltalkAgents (Macintosh), Smalltalk/X (Unix X11), Dolphin, Smalltalk MT, Object Studio, VisualAge and probably many others I have forgotten.
Other people just mixed Smalltalk features with other languages: Objective-C, ObjectPascal/Delphi, Clascal/ObjectPascal, Java, Ruby and so on.
In the same way, I would include in a list of Self implementations languages that borrowed a lot from its features but which are not actually compatible.
Beyond the official implementation from Stanford and Sun and the ones already listed in this thread I can remember:
JSelf by Diego Gómez Deck
https://web.archive.org/web/20080515215555/http://www.consultar.com/JSelf/ (the page is currently missing)
Self for the Java Virtual Machine
tinySelf0 and tinySelf1 by me http://www.merlintec.com/lsi/tiny.html a hand crafted parser in C capable of reading all Self 3.0 sources and a Self-in-Self testing a thread per object concurrency model, respectively
I seem to also remember a mySelf and an rSelf, which are terrible names to search for.
Many languages that are prototype instead of class based claim to be inspired by Self, but I am not sure I would agree in the case of NewtonScript (and Io, which is inspired by it) since they use Lieberman prototypes while Self is more similar to "Smalltalk With Examplars":
https://www.davethomas.net/papers/exemplar.pdf
This explanation and list doesn't seem to make this separation:
https://en.wikipedia.org/wiki/Prototype-based_programming
It is interesting that this list doesn't include ObjectLogo which predates Self and is where I first saw the idea of prototype based programming (it didn't seem that interesting until I saw Self). Kevo is mentioned in the article itself, but is also not on the list.
-- Jecel _______________________________________________ Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Russell,
There is a place on GitHub for a Self wiki:
https://github.com/russellallen/self/wiki
People can add implementations there.
Great idea! Seeing the list of projects reminded me that my own projects only ran on older versions of Self. It would be nice to update them to fix this.
Wasn't there another Self in Java at one point? dSelf or something like that?
Indeed, and searching for that found it mentioned on one of my own pages :-)
http://merlintec.com/swiki/Self/2.html
dSelf is described in the paper "dSelf - A Distributed SELF" by Robert Tolksdorf and Kai Knubben from 2001:
https://www.researchgate.net/publication/2483815_dSelf_-_A_Distributed_SELF
A quick search didn't turn up anything about OpenSelf. The mailing list archives might have something about that.
Marvin, announced in 2005, was supposed to be a Self implemented in Squeak by Pavel Krivanek, but I can't find anything about it beyond its SqueakMap page:
http://map.squeak.org/package/378a5744-80f7-4e9c-a0b8-ef5f4720571a
One interesting thing about both zigself and PySelf (for want of a name :) is that they both seek to define a small subset of the Self distribution as a core - booleans, collections, strings, etc.
Early versions of Self were basically just the core stuff. Unfortunately the earliest copy I have on my machine is Self 3.0 which already had 185 .sm files (Self module, I suppose?). I do have Self 1.1 but in a tape that I can't read.
-- Jecel
Why don't I start a new repo on GitHub as a place to keep historical Self versions and implementations - ie not for currently developed stuff but for old abandoned stuff like Self 3.0, Marvin, any of your old stuff you want to add etc
R
On May 20 2022, at 12:39 am, Jecel Assumpcao Jr jecel@merlintec.com wrote:
Russell,
There is a place on GitHub for a Self wiki:
https://github.com/russellallen/self/wiki
People can add implementations there.
Great idea! Seeing the list of projects reminded me that my own projects only ran on older versions of Self. It would be nice to update them to fix this.
Wasn't there another Self in Java at one point? dSelf or something like that?
Indeed, and searching for that found it mentioned on one of my own pages :-)
http://merlintec.com/swiki/Self/2.html
dSelf is described in the paper "dSelf - A Distributed SELF" by Robert Tolksdorf and Kai Knubben from 2001:
https://www.researchgate.net/publication/2483815_dSelf_-_A_Distributed_SELF
A quick search didn't turn up anything about OpenSelf. The mailing list archives might have something about that.
Marvin, announced in 2005, was supposed to be a Self implemented in Squeak by Pavel Krivanek, but I can't find anything about it beyond its SqueakMap page:
http://map.squeak.org/package/378a5744-80f7-4e9c-a0b8-ef5f4720571a
One interesting thing about both zigself and PySelf (for want of a name :) is that they both seek to define a small subset of the Self distribution as a core - booleans, collections, strings, etc.
Early versions of Self were basically just the core stuff. Unfortunately the earliest copy I have on my machine is Self 3.0 which already had 185 .sm files (Self module, I suppose?). I do have Self 1.1 but in a tape that I can't read.
-- Jecel _______________________________________________ Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Russell,
Why don't I start a new repo on GitHub as a place to keep historical Self versions and implementations - ie not for currently developed stuff but for old abandoned stuff like Self 3.0, Marvin, any of your old stuff you want to add etc
It would be nice to have these historical artifacts available somewhere.
Looking at what I have here, it seems I had a copy of both JSelf and of openself. Here is a (slightly edited) list of files and directories:
3SelfEnvironment.fm.pdf grm/ JSelf-0.1-jdk1.1.7.tar.gz klein-0.1/ manchester-course.ps mango/ openself-last.tar.gz self/ self3/ self3VM/ self4/ self4.1/ self4.1.2/ self4.1.2VM/ self4.1.5/ self4.1.5VM/ self4.1.6/ self4.1.6VM/ Self4.1Linux/ self4.1VM/ Self-4.4/ Self-4.4.alpha1/ Self-4.4.alpha2/ Self4Linux/ Self4Linux-0.2.0/ Self4Linux-0.2.0.src.tgz Self4Linux-0.2.0.tgz Self4Linux-0.2.1/ Self4Linux-0.2.1.src/ Self4Linux-0.2.1.src.tgz Self4Linux-0.2.1.tgz Self4Linux-0.2.2/ Self4Linux-0.2.2.src/ Self4Linux-0.2.2.src.tar.gz Self4Linux-0.2.2.tar.gz self4VM/ Self-cygwin-0.2.4.tar.gz Self-linux-0.2.4/ Self-linux-0.2.4.src/ Self-linux-0.2.4.tar.gz Self-Release-2017.1/ Self-x86-0.2.4-src.tar.gz SunSummary.fm.pdf
The folder just named "self" is the 2017 release. The folder grm has a single file which seems to be the Mango grammar for Self 3.
Looking at some files in OpenSelf, it seems to be an incomplete implementation in C++ by Marko Mikulicic from September of 2000. There is no Self code, so I suppose it was meant to read the files from the official Self.
-- Jecel
I've created a repo at:
https://github.com/russellallen/self-archive
If people have old stuff (implementations or documents) they are willing and able to share, either send me a pull request or just get the material to me offline and I can add it in.
This will be for archive only - not for stuff being worked on.
Russell
On May 20 2022, at 2:09 am, Jecel Assumpcao Jr jecel@merlintec.com wrote:
Russell,
Why don't I start a new repo on GitHub as a place to keep historical Self versions and implementations - ie not for currently developed stuff but for old abandoned stuff like Self 3.0, Marvin, any of your old stuff you want to add etc
It would be nice to have these historical artifacts available somewhere.
Looking at what I have here, it seems I had a copy of both JSelf and of openself. Here is a (slightly edited) list of files and directories:
3SelfEnvironment.fm.pdf grm/ JSelf-0.1-jdk1.1.7.tar.gz klein-0.1/ manchester-course.ps mango/ openself-last.tar.gz self/ self3/ self3VM/ self4/ self4.1/ self4.1.2/ self4.1.2VM/ self4.1.5/ self4.1.5VM/ self4.1.6/ self4.1.6VM/ Self4.1Linux/ self4.1VM/ Self-4.4/ Self-4.4.alpha1/ Self-4.4.alpha2/ Self4Linux/ Self4Linux-0.2.0/ Self4Linux-0.2.0.src.tgz Self4Linux-0.2.0.tgz Self4Linux-0.2.1/ Self4Linux-0.2.1.src/ Self4Linux-0.2.1.src.tgz Self4Linux-0.2.1.tgz Self4Linux-0.2.2/ Self4Linux-0.2.2.src/ Self4Linux-0.2.2.src.tar.gz Self4Linux-0.2.2.tar.gz self4VM/ Self-cygwin-0.2.4.tar.gz Self-linux-0.2.4/ Self-linux-0.2.4.src/ Self-linux-0.2.4.tar.gz Self-Release-2017.1/ Self-x86-0.2.4-src.tar.gz SunSummary.fm.pdf
The folder just named "self" is the 2017 release. The folder grm has a single file which seems to be the Mango grammar for Self 3.
Looking at some files in OpenSelf, it seems to be an incomplete implementation in C++ by Marko Mikulicic from September of 2000. There is no Self code, so I suppose it was meant to read the files from the official Self.
-- Jecel _______________________________________________ Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
I went ahead and created the wiki page
https://github.com/russellallen/self/wiki/Implementations
(Maybe I’ll make my own one day)
Bw
Stephen
On Thu, 19 May 2022 at 23:26, Russell Allen mail@russell-allen.com wrote:
There is a place on GitHub for a Self wiki:
https://github.com/russellallen/self/wiki
People can add implementations there.
Wasn't there another Self in Java at one point? dSelf or something like that?
One interesting thing about both zigself and PySelf (for want of a name :) is that they both seek to define a small subset of the Self distribution as a core - booleans, collections, strings, etc.
R
On May 19 2022, at 7:43 pm, Jecel Assumpcao Jr jecel@merlintec.com wrote:
Stephen De Gabrielle asked on Wed, 18 May 2022 08:41:55 +0100
@Self-interest list: Is there a list of Self implementations?
It would be nice to compile such a list and make it available somewhere on the main language site.
In the last few decades new languages have tended to have a single implementation. Having an open source version that you can download over the Internet and which runs on your computer (PC clone) and operating system (Linux, Windows or MacOS) eliminates most reasons for creating an alternative implementation. Only if you need it to be faster (like PyPy or LuaJit) or smaller to run on embedded devices does the effort make any sense.
Earlier languages had many implementations. Smalltalk-80, for example, took a long time to become officially available and even then only on high end workstations. So people had to create their own: Smalltalk/V (PCs), Little Smalltalk (text-only Unix machines and many microcomputers), SmalltalkAgents (Macintosh), Smalltalk/X (Unix X11), Dolphin, Smalltalk MT, Object Studio, VisualAge and probably many others I have forgotten.
Other people just mixed Smalltalk features with other languages: Objective-C, ObjectPascal/Delphi, Clascal/ObjectPascal, Java, Ruby and so on.
In the same way, I would include in a list of Self implementations languages that borrowed a lot from its features but which are not actually compatible.
Beyond the official implementation from Stanford and Sun and the ones already listed in this thread I can remember:
JSelf by Diego Gómez Deck
https://web.archive.org/web/20080515215555/http://www.consultar.com/JSelf/ (the page is currently missing)
Self for the Java Virtual Machine
tinySelf0 and tinySelf1 by me http://www.merlintec.com/lsi/tiny.html a hand crafted parser in C capable of reading all Self 3.0 sources and a Self-in-Self testing a thread per object concurrency model, respectively
I seem to also remember a mySelf and an rSelf, which are terrible names to search for.
Many languages that are prototype instead of class based claim to be inspired by Self, but I am not sure I would agree in the case of NewtonScript (and Io, which is inspired by it) since they use Lieberman prototypes while Self is more similar to "Smalltalk With Examplars":
https://www.davethomas.net/papers/exemplar.pdf
This explanation and list doesn't seem to make this separation:
https://en.wikipedia.org/wiki/Prototype-based_programming
It is interesting that this list doesn't include ObjectLogo which predates Self and is where I first saw the idea of prototype based programming (it didn't seem that interesting until I saw Self). Kevo is mentioned in the article itself, but is also not on the list.
-- Jecel _______________________________________________ Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
Self-interest mailing list Self-interest@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
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@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@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@lists.selflanguage.org http://lists.selflanguage.org/mailman/listinfo/self-interest
self-interest@lists.selflanguage.org