Gleam is a programming language that tries to solve the "why did my production system crash at 2am?" problem. It's built for the BEAM virtual machine - the same runtime that keeps WhatsApp running with 2 billion users and Discord handling billions of messages.
Here's the problem: Erlang and Elixir don't give a fuck about typos until runtime. Write user.naem
instead of user.name
? Enjoy debugging that at 2am when your production system shits the bed.
Gleam fixes this by adding a type system that actually helps instead of getting in your way. It catches the dumb mistakes at compile time so you can focus on the interesting bugs. Released as v1.0 in March 2024, it's new enough that the ecosystem is still growing, but stable enough that companies are shipping it to production.
BEAM is Great, But Debugging Sucks
The BEAM VM is honestly incredible. It handles millions of concurrent connections without breaking a sweat, and when something goes wrong, it just lets it crash and restarts instead of taking down your entire system. WhatsApp achieved over 2 million connections per server using this architecture, and Discord uses it to handle chat for gamers who lose their shit when there's any lag.
The problem is debugging distributed systems when your language doesn't catch type errors until runtime. Ever tracked down a GenServer crash in production? It's like trying to debug someone's fever dream while your boss breathes down your neck asking when the API will be back up.
Gleam keeps all the good BEAM stuff - the Actor model, OTP supervision trees, hot code reloading, and the ability to run millions of processes - but adds a type system that catches the obvious mistakes before they become 3am production incidents.
import gleam/io
pub fn main() {
// The compiler won't let you ship broken code
io.println(\"hello, friend!\")
}
Shipping to Production (And It Actually Works)
Gleam v1.12.0 finally fixed dependency hell in August 2025. About fucking time - that should've been solved in v1.0. At least they promise not to break your code with updates, which beats the hell out of JavaScript's "oh btw we deprecated half the API" release notes.
What you get out of the box:
- Built-in toolchain:
gleam new
,gleam build
,gleam test
- everything works without configuration hell - No build step bullshit: Run
gleam new myapp
and you have a working project, not a 500MBnode_modules
folder - Access to all BEAM packages: Thousands of Erlang and Elixir libraries work (when the type boundaries don't bite you)
- Performance improvements: 30% faster JavaScript compilation in v1.11 because they actually give a shit about build times
The language has corporate backing from Lambda (not AWS Lambda, the consultancy), and they ship updates every 2-3 months. Each release actually improves things instead of adding seventeen new ways to configure your bundler.
Companies are already using it in production, which means you won't be the first person to find out that some feature breaks in weird ways when you scale it up.