The same BEAM, a friendlier surface. Elixir compiles to the very bytecode your Erlang runs on and shares its processes, supervision, and pattern matching — but wraps them in a Ruby-inspired syntax, a real macro system, protocols, structs, and a build tool (Mix) that a modern team actually enjoys.
Same runtime, same primitives — processes, send/receive, links, monitors, and OTP behaviours are the ones you already know, callable from either language The pipe |> and with replace deeply nested calls and case ladders — the readability win Erlang never got Real metaprogramming — defmacro and the quoted AST, instead of parse transforms Protocols and structs give principled polymorphism and named data, where Erlang has records and behaviours One toolchain — Mix + Hex for builds, deps, tests, and releases, instead of rebar3 plus assorted scripts Doctests, ExUnit, and first-class docs are built in — testing and documentation are part of the language culture