← History

Gleam 2016

A friendly, statically typed language for the BEAM that compiles to Erlang and JavaScript.

Paradigmsfunctional, concurrent, statically-typed, compiled
Typingstatic, strong, sound type inference (no null, no implicit conversions)
Extensions.gleam
Created byLouis Pilfold

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

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.

Resources

See it in Code Compare →