Hi all!
Work continues on OurSelf.io at a feverish pace (literally as I got a mild case of Covid - like everyone else!)
My immediate aim is to get to a place where the full cycle of Self development can happen without needing a local VM and without having to SSH into the server.
The first part of this is building access from within the Self image to the underlying FreeBSD jail so that the developer can use the existing unix tools - git, ssh etc - to sync .self files to GitHub or wherever.
If you start a trial now on OurSelf.io you will see a new menu item - New Unix Terminal - which will, as the name suggests, open a morph which is a unix terminal. It is a very basic terminal, just enough for running simple commands and not enough for TUI apps such as vi etc.
But with it, I can (if I’m logged in and not just doing a trial)
- use the Transporter to file out modules - commit those modules to a git repository - push the commits to GitHub - pull changes - read those changes in via the Transporter
I can also build new snapshots, and if I save them as ‘/self/snapshot’ and restart the OurSelf world then the new snapshot will replace the existing one.
(I’m thinking of this as temporary, the long term aim is to pull everything into Self so that no one needs know how and on what the image is running. But we’re a way off that)
Cheers Russell
Hi Russell,
OurSelf.io looks like an interesting project. As I understand it, you launch a Self instance on a server within a FreeBSD container and then do screen sharing to that instance within a canvas element (and some JS code) in the browser. Is that correct?
Has anyone considered the possibility of porting Self to WASM so it could be run directly in the browser?
Steve
Yes, that's basically right. I'm using a X11->vnc->canvas_vnc_client pathway because it exists and works, but longer term I'd love to cut out X and just have a Self vnc server (or some higher level protocol) Running Self directly in the browser under WASM would be very attractive because it would tackle the issue of GUI latency which is probably a more important issue for development than raw VM speed at the moment. Presumably it would also make the system more scalable by reducing OurSelf.io server requirements, but that's not really an issue yet :) I suspect we're talking about writing a new Self VM - is a port of the existing VM to WASM even theoretically possible? Can you write a JIT in WASM? Maybe SqueakJS could be altered to run Self. But either way it requires a fair amount of work. Russell Steve Dekorte wrote: Hi Russell, OurSelf.io looks like an interesting project. As I understand it, you launch a Self instance on a server within a FreeBSD container and then do screen sharing to that instance within a canvas element (and some JS code) in the browser. Is that correct? Has anyone considered the possibility of porting Self to WASM so it could be run directly in the browser? Steve
Would it be possible to disable Self’s JIT and just compile the C++ to WASM Emcripten:
https://github.com/emscripten-core/emscripten
and then run Self with just its interpreter?
Btw, here’s a project that’s tinkering with JITs within WASM:
https://github.com/wingo/wasm-jit
Besides the other advantages of Self over JS, it would be interesting to compare the performance of Self-on-WASM to JS in the browser. IIRC, JS has mostly moved to optimizing the use of its interpreter as mobile platforms like iOS don’t allow native JITs.
It might also be neat to see JS running on top of Self/WASM, sort of like the Smalltalk or Java implementations on top of Self...
On Nov 28, 2022, at 1:42 PM, Russell Allen mail@russell-allen.com wrote:
Yes, that's basically right. I'm using a X11->vnc->canvas_vnc_client pathway because it exists and works, but longer term I'd love to cut out X and just have a Self vnc server (or some higher level protocol)
Running Self directly in the browser under WASM would be very attractive because it would tackle the issue of GUI latency which is probably a more important issue for development than raw VM speed at the moment.
Presumably it would also make the system more scalable by reducing OurSelf.io server requirements, but that's not really an issue yet :)
I suspect we're talking about writing a new Self VM - is a port of the existing VM to WASM even theoretically possible? Can you write a JIT in WASM? Maybe SqueakJS could be altered to run Self.
But either way it requires a fair amount of work.
Russell
Steve Dekorte wrote:
Hi Russell,
OurSelf.io looks like an interesting project. As I understand it, you launch a Self instance on a server within a FreeBSD container and then do screen sharing to that instance within a canvas element (and some JS code) in the browser. Is that correct?
Has anyone considered the possibility of porting Self to WASM so it could be run directly in the browser?
Steve
self-interest@lists.selflanguage.org