- GitHub - bastion-rs/bastion: Highly-available Distributed Fault-tolerant Runtime <-- is this still active
- GitHub - lunatic-solutions/lunatic: Lunatic is an Erlang-inspired runtime for WebAssembly <-- looks very cool
Distributed systems certainly have different requirements from async in that: if a channel fails in async, there's likely a hardware error, and crashing is acceptable. On the other hand, dist sys are expected to do work even when tcp / udp connections drop.
Having said that, it seems like alot of the work that goes into async are also very useful for dist sys:
- marking structs are Send
- handling failure on send/recv
- making code async
It seems like if we had primitives for:
- other_machine::spawn instead of async_std::spawn AND
- way to forbid accessing global memory
then a lot of async code may be able to actually run on a different machine.
What I am curious about here are:
what are complexities I am not taking into account
besides lunatic / bastion, if there are other efforts in this direction