Gleam は BEAM(Erlang 仮想マシン)と JavaScript の両方をターゲットとする型安全な言語です。バージョン 1.19.0 以前では、Gleam コンパイラは BEAM をターゲットとする際に人間が読める Erlang ソースコードを生成し、それをさらに Erlang コンパイラで BEAM バイトコードにコンパイルし直す必要がありました。2026 年 10 月 5 日に発表された v1.19.0 リリースでは、この手順が置き換わり、Gleam コンパイラは今や Erlang 抽象フォームを直接出力します。
この変更により、2 つの具体的な利点が得られます。まず、Erlang コンパイラの初期のトークナイズとパースの段階をスキップすることで、全体のコンパイル速度が向上し、BEAM 上の Gleam プロジェクトのビルド時間が顕著に短縮されます。次に、生成された抽象フォームは元の Gleam ソースに直接マッピングされる位置メタデータを保持するため、BEAM のクラッシュレポートやスタックトレースでは近似関数レベルではなく正確な行番号が表示され、デバッグ体験が向上します。
Gleam チームは BEAM バイトコードを直接生成する案も検討しましたが、BEAM バイトコードは Erlang VM のリリースごとに変更されるため、それらの変更に追いつくための継続的なメンテナンスと、Erlang コンパイラの数十年にわたる最適化を再実装する必要があるという理由で却下されました。抽象フォームをターゲットにすることで、その負荷を伴わずにほとんどのパフォーマンス向上を得られる持続可能な中間策となり、この戦略は姉妹言語である Elixir でも既に採用されています。
