Gleam

gleam.run ↗

Build type-safe concurrent programs for the Erlang virtual machine or compile them to JavaScript.

SI Score
80/100
Pricing
Open Source AI reading, not confirmed
Free plan
Not confirmed
Sign-up required
Not confirmed

Ask SI about Gleam

Answers use saved listing facts and recorded sources.
Homepage screenshot
Screenshot of the Gleam homepage

What it does

Gleam is a statically typed functional programming language with a command-line project workflow. Its compiler targets Erlang and JavaScript, so a team can use the Erlang runtime's concurrency model or run generated code in JavaScript environments. The official guide uses `gleam new` to create a project and documents build, run, and test commands; the language itself remains a source project to install rather than a hosted IDE.

Start with a generated project

The writing guide creates a project with gleam new vars, then uses the built-in command-line tooling to run and test it. A first exercise can add a small function and a test before changing the target or adding a dependency; the docs show gleam test and explain that generated projects include a test module. These are documented workflows, not commands executed for this listing.

Choose the target with the application in mind. Gleam can compile to Erlang for the BEAM runtime or to JavaScript, and the writing guide shows gleam run --target javascript for the latter. That choice changes the runtime and integrations you will use, so check the documentation for target-specific packages before reusing a dependency across both builds.

The compiler repository is licensed under Apache 2.0. A complete application can include separately licensed packages from the ecosystem, which should be checked individually.

Strengths

  • The same language can target Erlang or JavaScript runtimes.
  • A generated project includes a command-line workflow for running code and tests.
  • The official site provides an interactive language tour and project-writing guide.

Watch out for

  • A project must be built and deployed with the tooling for its selected Erlang or JavaScript target.
  • Packages and integrations can depend on the selected target, so a project should check target support before sharing dependencies.

Best for

  • Developers building concurrent services on the Erlang virtual machine with a statically typed language.
  • Teams that want to share Gleam code between Erlang and JavaScript deployments where dependencies permit.
  • Learners who want a guided language tour followed by a real project and test workflow.

Sources