
2026/06/03 7:16
Gleam バージョン 1.17.0 がリリースされました
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Gleam 1.17.0 の最も重要な更新は、
export escript コマンドの導入であり、これは Erlang がインストールされているどのマシンでも実行できるスタンドアロンの実行可能ファイル(.escript)を生成することを可能にすることで、ローカルのランタイム設定を必要とせずにプロジェクトの移植性を大幅に向上させます。この主要な機能に加え、バージョン 1.17.0 は改良されたエディタと言語サーバーを通じてコーディング体験の大幅な改善を提供します:言語 サーバー プロトコルを実装するすべてのエディタでハイライト参照がサポートされるようになり(IDE がホバーで変数の使用状況を表示することを可能にする)、todo キーワードを定式表現で使用できるようになり、タイプチェッキングと解析が可能になりました。「Fill labels」は現在定式表現と動作し、レコード更新構文にホバーすると不変のフィールドが表示されます。また、言語サーバーは不明な値に対して Qualified imports を提案し、完全に qualified な名前を持つタイプ警告を表示します。さらに、このリリースではコードアクションが拡張され、不変のフィールドを直接表示することでアップデートの簡素化を実現しています。さらに、--no-print-progress などの新しいフラグにより gleam dev でのビルドノイズが削減され、依存関係チェック(gleam deps outdated)は利用可能なパッケージアップグレードを明確に強調し、JavaScript コンパイルパフォーマンスが最適化されました(冗長なチェックの削除と割り当てコードのコンパクト化)。極めて重要なのは、このアップデートがビルドツールで以前に発見されたセキュリティ脆弱性を修正し、組織的な防御を潜在的な exploit に対して強化することです。本文
Gleam v1.17.0 リリース:新機能、改善点とセキュリティ修正
Gleam は Erlang 仮想マシン(VM)および JavaScript ランタイム で動作する型安全かつスケーラブルなプログラミング言語です。本日、長期間にわたる開発を経て公開された Gleam v1.17.0 の主要変更点は以下の通りです。
📺 community & イベント
- Gleam Gathering の開催:史上初のコミュニティ参加型会議が終了しました。
- 全セッションの動画は「Gleam Gathering」で視聴可能です。
- 次回開催予定:2027 年。
💻 コード生成と実行環境
BEAM escripts(エスクリプト)の実装
- Erlang VM 上で
ファイルを多数作成する代わりに、JavaScript のバンドラーのような単一ファイル形式で配布・実行できるようになりました。.beam
コマンドにより、バイトコードを含む単一ファイルを生成できます。gleam export escript
$ gleam export escript Compiling gleam_stdlib Compiling my_project Compiled in 0.48s Your escript has been generated to /home/louis/src/my_project/my_project. $ ./my_project Hello from my_project!
JavaScript 用パターンマッチングの最適化
- パターンマッチング処理が線形探索から決定木構造へ効率化されました。
- JavaScript 生成コードの軽量化:ビット配列チェックの冗長性排除やアサインメントコードのコンパクト化が行われています。
✨ ライター体験向上機能
ハイライト参照の表示
プロトコルを実装しました。textDocument/documentHighlight- 変数へのすべての参照を、カーソルが置かれた瞬間に自動でハイライトします。
定数表現における todo
式の使用
todo- コンパイル時に評価される**定数表現(Constant)**内でも
式を使用可能になりました。todo - これにより、型チェックとコード補完の改善が進みました。特に「Fill labels(ラベルの埋め込み)」機能は定数に対しても動作します。
レコード更新のホバー情報
- レコード更新構文(例:
)のホバー表示が強化されました。Person(..mom, age: 61) - 新しい値を指定していないフィールドも一覧表示され、型定義へのナビゲーションなしで情報の確認が可能です。
不明な値のインポート提案
- コンプエラー発生時に、コンパイラが適切なモジュールqualified 形式(例:
)を検出し提案します。io.println - これにより、インポート忘れによる誤りを防ぎやすくしています。
警告メッセージにおける文脈-aware な型の表示
- 警告に出力される型名は、qualified 名称または定義済みエイリアス名で正しく表示されます。
- 開発者がコード内で参照する方法と一致するため、理解が容易になります。
静かな開発モードの実行
コマンド実行時の進行状況メッセージを無効化するオプションが追加されました。gleam dev
$ gleam dev --no-print-progress Hello, from my_project_dev!
陳腐化した依存関係の件数表示
コマンドの結果に、更新可能なパッケージの総数を表示するサマリーが追加されました。gleam deps outdated- すべての依存関係が最新の場合も現在数を表示し、判断を容易にします。
$ gleam deps outdated 0 of 12 packages have newer versions available.
Git リポジトリの検知改善
コマンドにおいて、Git リポジトリ内の任意位置にあるパッケージも正しく検知し公開できるようになりました。gleam publish
🛠️ コードアクションと型チェック強化
不要なレコード更新の削除
- 既存フィールドを全て指定している場合の冗長な
構文を自動で発見・提案して削除するコードアクションが実装されました。..record
guard 式における誤った演算子の修正
- Guard 式内で文字列連結など不適切な演算子(
など)を使用した場合、正しい演算子を提案するコードアクションを発動します。+
破棄された値に対するパターンマッチのコードアクション
式の discard パターン(例:case
)に対して、「追加のパターンに分割」という動作を実行可能になりました。_- これにより漏れ防止や完全性チェックが容易になります。
不明なモジュールの作成コードアクション
- インポート先が存在しないモジュールの場合、エディタ上で新規モジュールを作成するためのコードアクションが表示されます(トップダウン型開発を支援)。
🐞 セキュリティとフォールトトレラント性
セキュリティ関連の修正
- ビルドツールの設定検証に関連する脆弱性が発見・修正されました。
- CVE 番号: CVE-2026-43965, CVE-2026-32685, CVE-2026-42795
フォールトトレラント性の向上
- コンパイラーがコードの不具合があっても推論を継続する能力が強化されました。
- これにより、言語サーバーはエラーがある状態でも有用な支援を提供し続けることができます。
🙏 感謝とサポートについて
本リリースには以下の開発者の尽力に感謝申し上げます: Gavin Morrow, Giacomo Cavalieri, Daniele Scaratti, Andrey Kozhev, raphrous など多数のコントリビューターが貢献されています。
さらに、コアチームメンバーである Giacomo Cavalieri と Surya Rose の GitHub Sponsors での支援を心より感謝申し上げます。
スポンサーリスト(一部抜粋):
- Abel Jimenez
- Adam Johnston
- Alex Houseago
- Anthony Scotti
- Charlie Tonneslan
- Cory Forsstrom
- Giacomo Cavalieri
- John Downey
- ...(多数の企業・個人支援者)
Gleam はコミュニティの力が全てです。詳細な変更点は Changelog をご覧ください。