but slow • Early ’90 - BEAM • 1992 - Erlang in production • In 1998 Ericsson announced the AXD301 switch, containing over a million lines of Erlang and reported to achieve a high availability of nine “9"s. • 1999 Ericsson banned the use of Erlang • 2004 Ericsson lifted the ban
Erlang, it contains: • an Erlang interpreter (which is called BEAM) • an Erlang compiler • a protocol for communication between servers (nodes) • An Object Request Broker • a static analysis tool called Dialyzer • a distributed database server (Mnesia) • many other libraries and utilities
language, everything is an expression • Erlang functions can be called without costs • Metaprogramming with macros • Polymorphism via a mechanism called protocols and behaviours • Pattern matching • Expressive language that programmers love (like Ruby!)
process terminates, only that process is restarted. • :one_for_all - if a child process terminates, all other child processes are terminated and then all child processes are restarted. • :rest_for_one - if a child process terminates, the “rest” of the child processes are terminated. Then the terminated child process and the rest of the child processes are restarted.