# Gleam (programming language)

**Gleam** is a statically typed, functional programming language that compiles to Erlang's BEAM (Erlang's virtual machine that runs Gleam code) virtual machine and to [JavaScript](https://www.edgepedia.org/javascript), designed for building type-safe, concurrent, fault-tolerant systems. It was created by Louis Pilfold, a software engineer who had worked with Erlang and [Elixir](https://www.edgepedia.org/elixir-programming-language) and wanted the safety of languages like Elm, OCaml, and [Rust](https://www.edgepedia.org/rust-programming-language) combined with the BEAM's concurrency and fault tolerance<sup>[1](https://gleam.run/)</sup><sup> • </sup><sup>[2](https://bloghints.com/programming-languages/gleam-programming-language.php)</sup>. Version 1.0 was released on 4 March 2024<sup>[3](https://gleam.run/news/)</sup>.

| Key fact | Detail |
|---|---|
| Targets | Compiles to Erlang (BEAM) and, since v0.16.0 (17 June 2021), to JavaScript, generating TypeScript definitions for interop<sup>[1](https://gleam.run/)</sup><sup> • </sup><sup>[4](https://gleam.run/news/v0.16-gleam-compiles-to-javascript/)</sup> |
| First stable release | v1.0 on 4 March 2024<sup>[3](https://gleam.run/news/)</sup> |
| Tooling | Compiler, build tool, formatter, editor integrations, language server, and package manager ship in a single package; a project starts with `gleam new`<sup>[1](https://gleam.run/)</sup> |
| Ecosystem | Gleam packages publish to Hex, shared with Erlang and Elixir; the Gleam repository had just under 600 packages in 2024, with hex.pm's roughly 16,000 packages also reachable<sup>[6](https://jonocarroll.com.au/2024/09/05/side-by-side-comparison-gleam-vs-r/)</sup> |
| Influences | Erlang, Elixir, Elm, OCaml, Rust, and Go<sup>[2](https://bloghints.com/programming-languages/gleam-programming-language.php)</sup> |
| Industry recognition | Listed in the Assess ring of Thoughtworks Technology Radar volume 32 (April 2025)<sup>[7](https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2025/04/tr_technology_radar_vol_32_en.pdf)</sup> |

## Design goals

Gleam follows a simple-language philosophy: the language surface is deliberately small, with a strong focus on having one way to do things, which its proponents say makes third-party code easy to read and new developers quick to onboard<sup>[8](https://gleam.run/case-studies/strand/)</sup><sup> • </sup><sup>[9](https://blog.nestful.app/p/why-i-rewrote-nestful-in-gleam)</sup>. The official FAQ states that Gleam will always remain a small and cohesive language with a minimal feature set, and that many features popular in other languages will not be added<sup>[10](https://gleam.run/frequently-asked-questions/)</sup>.

The language has no metaprogramming system, a deliberate contrast with Elixir's macro-heavy frameworks; the project is open to some form of metaprogramming only if it does not hurt readability and fast compilation<sup>[10](https://gleam.run/frequently-asked-questions/)</sup>. Arithmetic is total in a specific way: when a program divides by zero, the only option open to Gleam is to return 0, and the standard library provides functions returning a result type for callers who need to handle division explicitly<sup>[10](https://gleam.run/frequently-asked-questions/)</sup>.

## Compilation targets and interop

On the Erlang virtual machine, Gleam code compiles to a series of `.beam` files, one per module, the same bytecode format used by Erlang and Elixir<sup>[11](https://gleam.run/news/single-file-gleam-beam-programs-with-escript/)</sup>. The JavaScript backend, added in v0.16.0, outputs human-readable, pretty-printed source code and requires no extra components to install<sup>[4](https://gleam.run/news/v0.16-gleam-compiles-to-javascript/)</sup>.

**Externals.** Gleam's external types and external functions let Gleam code call code written in other languages. On Erlang, Gleam can use Erlang, Elixir, LFE, and other BEAM languages; on JavaScript, it can use JavaScript and other compile-to-JavaScript languages. There is no additional performance cost for calling external functions, but the Gleam compiler cannot type-check external code, so an inaccurate type annotation can cause unexpected behavior or runtime crashes; the documentation recommends using externals sparingly<sup>[12](https://gleam.run/documentation/externals/)</sup><sup> • </sup><sup>[13](https://tour.gleam.run/advanced-features/externals/)</sup>.

Because Gleam shares the Hex package repository with Erlang and Elixir, Gleam programs can use thousands of published packages written in any of those languages<sup>[1](https://gleam.run/)</sup>.

## Tooling

A Gleam installation bundles the compiler, build tool, formatter, editor integrations, and package manager<sup>[1](https://gleam.run/)</sup>. The language server has been a major development focus: releases through 2025 and 2026 added global rename and find references, go-to-definition for record fields, code actions such as generating missing type definitions, code folding, and hover support<sup>[3](https://gleam.run/news/)</sup><sup> • </sup><sup>[14](https://gleam.run/roadmap/)</sup>. The interactive language tour runs compiled Gleam entirely in the browser<sup>[15](https://tour.gleam.run/)</sup>.

Recent releases show the pace of development: v1.16.0 (April 2026) added JavaScript source map generation, v1.17.0 (June 2026) added single-file BEAM programs via escript, v1.18.0 (July 2026) added language-server support for record fields and deprecated pipe rewriting syntax, and v1.19.0 (October 2026) added compilation to Erlang abstract forms and faster compilation on the Erlang target<sup>[14](https://gleam.run/roadmap/)</sup><sup> • </sup><sup>[16](https://github.com/gleam-lang/gleam/releases)</sup>. The roadmap lists planned work including gleam_erlang and gleam_otp v1.0, private Hex package support, and improved JavaScript record performance<sup>[14](https://gleam.run/roadmap/)</sup>.

## Comparison with Elixir and Rust

Gleam is often described as a type-safe sibling language to Elixir, since both run on BEAM. In its FAQ, the project draws an explicit comparison with Rust: the two share some syntax, but Rust is a low-level imperative language featuring controlled mutation, manually managed memory verified at compile time, several metaprogramming mechanisms, and a broad set of language features, whereas Gleam is a high-level functional language built around immutability, offering garbage collection automatically, no metaprogramming, and a compact, easily learned feature set that executes on the Erlang and JavaScript virtual machines. Both have strong static type systems, and Gleam's developer tooling was inspired in part by Rust's<sup>[10](https://gleam.run/frequently-asked-questions/)</sup>.

Elixir has since been gaining its own type system.

## Use in production

Thoughtworks Technology Radar volume 32 places Gleam in its Assess ring, describing it as introducing type safety at the language level to a platform whose languages have traditionally been dynamically typed, combining functional expressiveness with compile-time type checking to reduce runtime errors<sup>[7](https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2025/04/tr_technology_radar_vol_32_en.pdf)</sup>.

Published case studies describe production use. Strand, a London marketing agency, adopted Gleam in January 2024 for a business-critical financial management system, starting with a single service and expanding it to replace the backend that talks to their database; the team reported zero Gleam-related crashes since go-live<sup>[8](https://gleam.run/case-studies/strand/)</sup>. Nestful, a list-taking web application, was rewritten from Vue and [TypeScript](https://www.edgepedia.org/typescript) to Gleam with the Elm-inspired Lustre frontend framework, and as of January 2026 is served entirely by Gleam, with TypeScript used only for glue code and FFI<sup>[17](https://blog.nestful.app/p/how-we-dropped-vue-for-gleam-and)</sup>.

The community held its first all-Gleam conference, Gleam Gathering, with videos published in 2026 and a next edition planned for 2027<sup>[11](https://gleam.run/news/single-file-gleam-beam-programs-with-escript/)</sup>. The language's mascot is Lucy, a pink star<sup>[18](https://alembic.com.au/blog/gleam-gathering-2026)</sup>.

## References

1. [Gleam programming language, official website](https://gleam.run/)
2. [Is Gleam a Good Typed Alternative to Elixir?, Bloghints](https://bloghints.com/programming-languages/gleam-programming-language.php)
3. [News, Gleam programming language](https://gleam.run/news/)
4. [Gleam compiles to JavaScript! Gleam v0.16 released](https://gleam.run/news/v0.16-gleam-compiles-to-javascript/)
5. [Type checking, The Gleam Language Tour](https://tour.gleam.run/basics/type-checking/)
6. [Side by Side Comparison, Gleam vs R, Jonocarroll](https://jonocarroll.com.au/2024/09/05/side-by-side-comparison-gleam-vs-r/)
7. [Thoughtworks Technology Radar, Volume 32 (April 2025)](https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2025/04/tr_technology_radar_vol_32_en.pdf)
8. [Optimising for maintainability: A case study of Gleam in production at Strand](https://gleam.run/case-studies/strand/)
9. [Why I Rewrote Nestful in Gleam, Nestful blog](https://blog.nestful.app/p/why-i-rewrote-nestful-in-gleam)
10. [Frequently asked questions, Gleam programming language](https://gleam.run/frequently-asked-questions/)
11. [Single file Gleam BEAM programs with escript, Gleam v1.17.0](https://gleam.run/news/single-file-gleam-beam-programs-with-escript/)
12. [Externals guide, Gleam Programming Language](https://gleam.run/documentation/externals/)
13. [Externals, The Gleam Language Tour](https://tour.gleam.run/advanced-features/externals/)
14. [Gleam's Development Roadmap](https://gleam.run/roadmap/)
15. [Welcome to the Gleam language tour](https://tour.gleam.run/)
16. [Releases, gleam-lang/gleam, GitHub](https://github.com/gleam-lang/gleam/releases)
17. [How we dropped Vue for Gleam and Lustre, Nestful blog](https://blog.nestful.app/p/how-we-dropped-vue-for-gleam-and)
18. [Reflections on Gleam Gathering 2026, Alembic](https://alembic.com.au/blog/gleam-gathering-2026)

---
*Topic: Encyclopedia › Technology and the built world › Computing and digital systems › Software and programming › Programming languages › Individual programming languages › Functional, logic, and array languages*

*Initially written Sep 17, 2026 · Reviewed: Oct 15, 2026 · Edited: Oct 15, 2026 · Last review: Oct 15, 2026*

*Copyright 2026 EdgeChat AI, a subsidiary of Biostate AI.*

License: Edgepedia Community License 1.0, https://www.edgepedia.org/edgepedia/license
