Gleam 2016
A friendly, statically typed language for the BEAM that compiles to Erlang and JavaScript.
Influenced by: Erlang Elixir elm ocaml rust go
Gleam is a friendly, statically typed functional language for the Erlang virtual machine (BEAM) that also compiles to JavaScript. It pairs a sound, ML/Rust-influenced type system with Erlang/OTP's fault-tolerant, massively concurrent actor model, and deliberately keeps a tiny surface area: no null, no exceptions, just a Result type and exhaustive pattern matching. The result is a language you can learn in an afternoon and rely on in production.
What makes it distinctive
- Sound static type system with full type inference - the only statically typed language among the mainstream BEAM languages
- Compiles to both Erlang (for the BEAM) and JavaScript (browser/Node/Deno), with generated TypeScript definitions
- No null and no exceptions: errors are values, modeled with the built-in Result type and handled via pattern matching
- Type-safe implementation of the Erlang/OTP actor model for fault-tolerant, massively concurrent systems
- Tiny, consistent language surface area - designed to be learnable in an afternoon
- Compiler written in Rust; ships an all-in-one tool with a build system, package manager, formatter, and language server
- Friendly culture and tooling, including helpful compiler error messages and a recognizable brand-pink identity
History
Gleam was created by Louis Pilfold, who first showed the language publicly in 2016 - an early prototype born from a desire to bring a sound, inferred static type system to the Erlang ecosystem, which was historically the domain of the dynamically typed Erlang and Elixir. The idea was to keep the legendary reliability and concurrency of the BEAM (the Erlang virtual machine that powers systems like WhatsApp) while catching whole classes of errors at compile time.
Development matured over several years. The first numbered release, v0.1, arrived on 15 April 2019, after Pilfold rewrote the compiler in Rust (earlier prototypes had been written in Erlang). Through the 0.x era Gleam grew a package manager, a build tool, a formatter, and a language server, steadily polishing the developer experience. A pivotal milestone came in 2021 when Gleam gained the ability to compile to JavaScript in addition to Erlang, letting the same Gleam code run in the browser, on Node.js and other runtimes, and on the BEAM - with generated TypeScript definitions for safe interop.
The language reached its first stable release, v1.0.0, on 4 March 2024, a statement that Gleam's syntax and core libraries were stable and ready for production use. Backed by sponsors and a growing community, Gleam has continued a brisk cadence of point releases since (v1.1 in April 2024 and onward), adding features such as improved error messages, performance work, and a type-safe implementation of Erlang's OTP actor framework. Its type system draws on Elm, OCaml, and Rust, while its runtime semantics and concurrency model come straight from Erlang and the broader BEAM lineage, making it a distinctly modern member of the BEAM family.