How is runtime fault-tolerance achieved? My understanding of Erlang is that the BEAM VM implements these capabilities (custom threads, supervision, restarts, hot reload), but it is one level removed and above actual code. And they implement their own user-space threading runtime in order to support them. But in Rust, there is no such runtime (or is Bastion implementing one?) and it seems like this is used as a library. I'm very curious.<p>I think another way to frame my question would be: which is the basic unit of parallel execution in Bastion? A thread? Or a separate process? There are mentions of lightweight processes and subprocesses in the README but it is rather vague what these are.
Could we hear a little more about the background of the project, including what it's being developed for? Really interested to learn more about the project, this looks great
Very appreciate the work on bastion, which really gets the spirit of erlang actor programming with the supervisor-ing strategy!
The code is clean and well documented, and I cannot believe the project is not well-known by rust communities.
This looks promising, though the "No Forced Trait Implementations" seems to instead require using a strange looking msg!() macro?<p><a href="https://docs.rs/bastion/0.3.4/bastion/macro.msg.html" rel="nofollow">https://docs.rs/bastion/0.3.4/bastion/macro.msg.html</a><p>Seems less clean to read than Riker (<a href="https://riker.rs" rel="nofollow">https://riker.rs</a>), though that doesn't really do async well.
I wonder how this performs in comparison to actix[1] & axiom[2]?<p>1. <a href="https://github.com/actix/actix" rel="nofollow">https://github.com/actix/actix</a>
2. <a href="https://github.com/rsimmonsjr/axiom" rel="nofollow">https://github.com/rsimmonsjr/axiom</a>