TL;DR

静的型付けの関数型プログラミング言語。BEAM(Erlang VM)上で動き、JavaScript のコードも出力できる。2018 年に生まれた新しい言語で、2024 年 3 月 4 日に正式バージョンの v1.0.0 がリリースされた。

なぜ必要か

実用的な型システムを持ち、コードを動かす前にエラーを見つけることを目指している。null も例外もない。動作基盤には、並行処理と耐障害性で知られる Erlang のランタイムを使う。

仕組み

コンパイラは Rust で書かれている。Gleam のコードは Erlang のバイナリ(beam ファイル)にコンパイルされ、BEAM 上で動く。これは Elixir や LFE と同じである。そのため、Elixir など同じ BEAM 上で動く言語と親和性が高く、Erlang や Elixir のコードやライブラリを呼び出せる。

JavaScript にもコンパイルできるので、JavaScript のランタイム上でも動く。Node.js、Deno、Bun での動作をサポートしている。

Go や Rust のように、基本的な機能は標準ライブラリに含まれている。コンパイラ、ビルドツール、フォーマッタ、パッケージマネージャも同梱されている。パッケージは Rust と同じように TOML ファイルで管理する。

例

import gleam/io
import gleam/string
 
pub fn main() {
  // Use a function from the `gleam/io` module
  io.println("Hello, Mike!")
 
  // Use a function from the `gleam/string` module
  io.println(string.reverse("Hello, Joe!"))
}

一番人気の Web フレームワークは wisp のようである。開発者は Gleam と同じ人だ。データベースの操作には、PostgreSQL のクライアントである pgo などがある(Awesome Gleam の一覧)。

自分の理解

Rust に Elixir とガベージコレクションを混ぜたようなイメージの言語である。

Gleam Language Tour は、Go でおなじみの形式のチュートリアルである。

アイコンはゆめかわで、ファイル名を見る限り Lucy という名前らしい。

関連

出典