general purpose programming language built on top of the Erlang BEAM VM. • Invented by Jose Valim, Rails core commiter. • Full compatibility with the Erlang Universe! • Compiles to Erlang Byte code. • Ruby like Syntax. • Amazing tooling and documentation!
to support distributed, fault tolerant, highly available, non stop applications back in 1986. • Erlang runs on a battle tested BEAM virtual machine. • WhatsApp scaled 2 million connections in a server running Erlang VM! • RabbitMQ, an open source message broker software that implements Advance Message Queueing Protocol(AMQP) is built using Erlang. Highly tolerant and distributed. • https://github.com/erlang/otp
Not to be confused with OS processes. • Processes communicate via message passing. • Processes in Elixir are extremely lightweight in terms of CPU and memory (unlike threads in many languages?). • Create processes like you create objects in Ruby. ;-) Processes
a client server relation • A GenServer process is like any other Elixir process and can be used to maintain state, run code asynchronously and so on. • Has a standard set of interface functions.
processes called child processes. • Supervisors are used to build a hierarchical process structures called supervision trees, a nice way to structure fault tolerant applications. • Strategies: :one_for_one, :rest_for_one, :one_for_all