The document discusses concurrency and fault tolerance in Elixir and Erlang. Some key points include:
1) Erlang was designed for concurrency and high availability from the start, with lightweight processes and supervision trees that restart failed processes.
2) Elixir builds on Erlang's concurrency primitives like processes, message passing, and links to provide robust fault tolerance.
3) The document covers various Elixir and Erlang concurrency features like processes, message passing, supervision trees, links, and more.
23. “Since cut-over of the first nodes in British Telecom's network
in January 2002 only one minor fault has occurred, resulting in
99.9999999% availability.”
“The network performance has been so reliable that there is
almost a risk that our field engineers do not learn maintenance
skills.”
Bernt Nilsson - director of Ericsson’s Next Generation Systems program
185. Javascript -
shared mutable global state
Blocking Event Loop
Rust -
Low Level
Async in progress
No coroutines
Go
Suture
(OTP Clone)
goroutines sem ID
shared mutable state
static signatures
Scala
Akka
(OTP Clone)
shared mutable state
static signatures
Clojure Pulsar / Quasar
Almost Erlang-like Process
JVM limitations