was thinking about tuplespace-oriented programming. back in school, i learned about the use of Linda as a synchronization primitive (with a data payload!), and thought a little later about how you could tie that idea into some sort of a micro-Erlang. Like...
("add1", x, y) -> ("catadd", x+y)
("add2", x, y) -> ("catadd", x+y)
("catadd", x) ("catadd", y) -> ("IO", [str x] ++ [str y])
...with inputs placed into the tuplespace:
("add1", 1), ("add1", 2), ("add2", 3), ("add2", 4)
...would indeterminately output either "36" or "63"
Some functional programming courses actually cover how to implement your own parser combinator libraries--and in fact, once you've got the basic connections to the data structures all together, these sorts of libraries can actually be made of highly generic components. Pedagogically, it probably is a pretty solid choice for a first sizable FP project, especially in a language at least like Haskell. might be worth revisiting if y'all ever poke around in that world
@neauoire @rek what is the motivation for implementing the tools (and required toolchain for development and debugging, docs and maintenance to avoid bitrot etc) on top of something like this over say, a sdl based c backbone and lua (or if you're feeling ultra tiny, rxi's fe)?
I feel like some of the resilience goal is lost by the whole toolchain becoming more esoteric; it may be a different kind of philosophical win though.
The emulator will be pretty rigid and contain all the helpers, The assembler/emulator will both remain in C+SDL, but I'm planning on making one for Plan 9 as well, and one for the the browser too.
The roms of the apps will be working everywhere. They will be tiny too. It's a way of doing cross platform.
@neauoire it already has a webasm port, I think as part of emscripten? I think resource management is a bit of a pain but it's super widely used so it can't be too bad. No idea about plan9 portability though
@maxc I don't want to get anywhere near emscripten, cross-compiling my tools with em is a terrible awful process that I will not try again.
@neauoire 👍 totally fair, but what's the approach for porting the c backend/vm otherwise? Separate implementation entirely in js or just the glue code to canvas/webgl and audio, and then some non-em webasm? Separate again for the plan9 drawing/audio libs?
It all just seems like a very long process with a lot of stuff to maintain, and a vm on top of that!
But, if that's the plan that's fine and commendable - just a surprising lot of work for a deliberately minimal toolkit.
@maxc the emulator/vm is very simple(400 lines of C atm), that i will make the equivalent in plan9, and a little js canvas emulator. It's not that much work so far, maybe there's some complexity that I'm not seeing down the line. I'm working on something like a PPU at the moment for this.
Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.