出来事の日付:2026年10月22日。

プログラミング言語Crystalのプロジェクトがバージョン1.22.0をリリースした。言語や標準ライブラリの変更に加え、公式に対応するプラットフォームを拡大している。メンテナーによると、バージョン1.21.1以降の変更は251件で、33人が貢献した。ビルド済みパッケージは、プロジェクトのGitHubリリースや配布経路を通じて提供されている。

言語面で目立つ追加機能の一つが、定数に対する型宣言のサポートだ。開発者は、ほかの宣言とおおむね同じ方法で定数に明示的な型を付けられるようになり、想定する値の種類をコンパイラやコードの読者に、より明確に示せる。また、コンパイル時のフラグにアクセスするための `Crystal::ALL_FLAGS` と `Crystal::USER_FLAGS` も公開された。

Crystal 1.22では、出力をパイプで渡した先のプログラムが読み取りをやめた際の、コマンドラインでの動作が変わる。標準出力または標準エラー出力への書き込みが `EPIPE` で失敗すると、プロセスは直ちに終了するようになった。既定の動作が、従来一般的な `SIGPIPE` の挙動に近づく。以前は、書き込みの失敗で通常 `IO::Error` が発生し、通常のシェルパイプラインの利用でも不要なエラーメッセージが表示されることがあった。以前の動作が必要なプログラムでは、`STDOUT.exit_on_broken_pipe = false` によって新しい既定動作を無効にできる。

今回のリリースでは、Crystal 1.0より前から非推奨だった `Process.fork` が削除された。この整理により、同APIに依存したままの古いアプリケーションは変更が必要になる可能性がある。かなり以前のリリースから更新するチームは、単に機能が追加されるだけの更新と捉えず、非推奨の警告と変更履歴の全体を確認する必要がある。

プラットフォームのサポート区分も進展した。公式ビルドが提供されるようになったことを受け、`aarch64-linux-gnu` と `aarch64-linux-musl` のターゲットはTier 2からTier 1へ昇格した。また、1.22は `aarch64-windows-msvc` 向けビルドを提供する最初のCrystalリリースとなり、64ビットArmプロセッサ上で動作するWindowsシステムにもビルド済み版の対応が広がった。

コンパイラの診断機能とデバッグ基盤には、大規模な内部更新が加わった。DWARFパーサーは必要に応じてセクションを走査し、検索用のインデックステーブルを構築するようになった。一方、デコード済みのバックトレース行はLRUキャッシュに保持される。DWARF 5の形式である `DW_FORM_addrx<n>` と `DW_FORM_strx<n>` のサポートも追加された。これらの変更は、解析処理とメモリー使用量を減らすと同時に、繰り返し行うシンボル検索を高速化することを狙っている。

対応する各OSでは、Crystalのネイティブイベントループが、既定でシステムのセレクターを使用するようになった。プロジェクトはSolarisで `epoll` を、残りのBSDターゲットで `kqueue` を有効にした。Libeventは明示的に選択する代替手段としてのみ利用可能で、メンテナーは将来のバージョンで非推奨になる可能性を示した。OpenSSLバインディングではカーネルTLSサポートが既定で有効になり、HTTP関連でも複数の修正と改善が行われた。

プロジェクトは将来のバージョンとの互換性に関する要件も正式に定めた。Crystal 1.22のビルドには、バージョン1.14以降のステージゼロコンパイラが必要になる。パッケージのメンテナーやソースからビルドする環境の担当者は、ビルドパイプラインを更新する前に、この最低バージョンを考慮する必要がある。