| To provide context, understanding this requires a little bit of background knowledge about concurrency paradigms. In concurrent programming, there are a few mental models/approaches you can use to achieve it. Each of them have different "values systems" and tradeoffs, if you will. In a nutshell, you have: - Locks (Mutex/Semaphore) - Communicating Sequential Processes - Software Transactional Memory - Actor Model The Actor Model is a particularly powerful paradigm because it isolates processes and works via message passing and spawning. The reason why Erlang/Elixir are fault-tolerant is because of the BEAM's process model, any given process (more or lesss) can fail and it's not a problem due to isolation. What this library allows you to do is architect applications in ways such that they are much more resilient to failure and easier to scale out + parallelize/distribute. It doesn't have to be a networked application either, any code process can be an actor. It applies to any software. If you want a great overview of the Actor model, there are some slides here which do a fantastic job of illustrating it: https://cs.nyu.edu/wies/teaching/ppc-14/material/lecture10.p... |