acook on master
Better msg when hitting a null Add exit op rename block and label related … and 3 more (compare)
acook on master
Example was unecessarily using @ (compare)
acook on master
Add some comments to clarify oC… Relf Stack no longer adds a spa… (compare)
acook on mutex_by_value
acook on master
Pass mutex by reference The cu… Merge pull request #28 from aco… (compare)
blacklight
compiler (which is extremely simple) will most likely be re-implemented in blacklight
's blpl
itself.
Hi @acook !
I've talked to the author of https://computes.io/ - it's a Javascript based system. The nice thing about this approach is that it has sandboxing and multi-platform support right from the beginning. I've found a slightly different approach here: https://github.com/ewasm/wasm-metering which allows for instruction-level accounting.
Process persistence will definitely require a new VM and thus will introduce some performance tradeoffs. It's of course not required for distributed general purpose computing but might be useful nonetheless, allowing for interesting execution networks and increasing resilience in the case of failing or uncooperative nodes.
At the moment I'm trying to build a simple POC from a simple, lispy pattern matcher. An interesting observation is that if the rewriting rules themselves are modifiable, they have to be serialized with the process, requiring the base interpreter to be absolutely "frozen" (similar to https://github.com/cgyarvin/urbit/blob/master/doc/book/1-nock.markdown ). I'll also have to take a closer look at Erlang and Forth.
blacklight
is that it natively understands its own bytecode as a data structure, so freezing a process and sending it over the wire should be fairly seamless aside from open file handles (which is the tricky part)
blacklight
, but you'd lose the ability to send running programs over the wire
blacklight
can be used without the networking layer, and work fine as an embedded or standalone target VM, if you don't need (or desire) the networking component
That would be interesting.
Regarding the IO interface, it might make sense to implement the https://en.wikipedia.org/wiki/9P_(protocol) or a simplified version of it, such that processes can access external resources under a file hierarchy and pass a modified namespace to child processes, thereby sandboxing them