BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Erlangランタイムの静的型付け関数型言語Gleamがバージョン1.0に到達

Erlangランタイムの静的型付け関数型言語Gleamがバージョン1.0に到達

原文リンク

Erlang仮想マシン(BEAM)上で実行されるアクターベースの高度な並行処理が可能な関数型言語であるGleamがバージョン1.0に到達した。これは、セマンティックバージョニングに基づいた下位互換性が保証され、運用システムで使用できるようになったことを意味する。

Gleamは、表面積が小さく、読みやすく理解しやすい、表現力豊かな言語を目指している。

GleamはErlang仮想マシン上で動作する。Erlangは、WhatsAppのような世界でもっとも信頼性が高くスケーラブルなシステムの多くで使われている、成熟したテスト済みのプラットフォームだ。GleamはJavaScriptランタイム上でも動作するため、Gleamのコードをブラウザやモバイルデバイスなど、あらゆる場所で実行できる。

Gleamは、Elm、OCaml、Rustのような強力な静的型付け言語の流れを汲んでおり、堅牢な静的解析とコンパイル時間の保証を提供する。また、Clojureのように構造共有で実装されたイミュータブルなデータ構造を採用し、効率的な動作を保証している。アクターやErlangのインメモリキーバリューデータベースETSによって、変更可能な状態への同時アクセスが実現される。

この言語のコアチームによると、Gleamの同時実行システムは何百万ものタスクを同時に実行でき、イミュータブルなデータと世界を止めないガベージコレクタのおかげで簡単にスケールできる。

Gleamのプログラムは、BEAM用に作成されたパッケージを、そのプログラム作成に使用された言語とは無関係に使用できる。さらに、Gleamプログラム内でErlangとElixirのコードを混在できる。これは、GleamビルドツールがElixirソースファイルだけでなくElixir依存ファイルもコンパイルでき、Gleamコードから外部関数を呼び出してインポートできる特定の構文をサポートしているためである。Gleamは、JavaScriptランタイム用にコンパイルする際、JavaScriptコードとのシームレスな統合もサポートしている。

pub fn register_event_handler() {   let el = document.query_selector("a")  element.add_event_listener(el, fn() {     io.println("Clicked!")  })}

GleamはErlangのホットコードリロードも使うことができるが、Erlang自体が提供する追加保証はない。特に、実行中のコードでどの型が使われているかを知ることができないので、アップグレードされたコードを型チェックできない。

Erlang仮想マシン用の言語の分野には、AlpacaCaramelElixirなどいくつかのGleamの競合がある。AlpacaもCaramelも静的型付け言語で、Gleamとはいくつかの点で異なっている。特にキャラメルはOCamlをベースにしており、コードを生成するためにOCamlコンパイラーをフォークしている。Gleamはこの中で唯一JavaScriptもターゲットにしている。一方、Elixirは間違いなくBEAM上でErlangに代わるもっとも成熟した人気言語であり、Rubyライクな構文と動的型システムを提供している。

作者について

この記事に星をつける

おすすめ度
スタイル

BT