
2026/07/03 5:51
Clojure 1.13 でチェック済みキーのサポートを追加
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Clojure 1.13.0-alpha1 は、2026 年 7 月 2 日に Alex Miller によって発表され、現在利用可能です。このリリースでは以下の主要な更新が追加されました:欠落したキーに対してエラーを抛げる新規のチェックされた構造化変種(
:keys!, :syms!, :strs!)、CLJ-2949 で定義される見直された req! 関数(キーが見つからない場合は報告)などです。その他の変更としては、ディレクティブの & の後にドキュメンテーションキーを許可する機能(CLJ-2961)、let、loop、および let* 内でのローカルバインディングとしての & の使用制限(CLJ-2954)、PersistentArrayMap を PersistentHashMap に移行する前にサイズ 64 まで成長させることで同一性スキャンの効率を改善する最適化などが含まれます。さらに、静的イニシャライザー定数から ACC_FINAL の指定が削除されました(CLJ-2891)。これは今後の Java バイトコードベースラインの変更のためにランタイムを準備し、内部更新によってランタイムおよびテスト用依存関係も再更新されています。開発者は deps.edn または CLI スタートアップコマンドを更新して、バージョン "1.13.0-alpha1" を使用することを求められています。アルファリリースとして、さらに破断的な変更が予想されます;古い構造化パターンで & バインディングを使用しているユーザーは、潜在的なエラーに留意し、アップグレード前に十分にテストする必要があります。本文
Clojure 1.13.0-alpha1 リリース
2026 年 7 月 2 日、Clojure 1.13.0-alpha1 が公開されました。詳細なダウンロード方法は公式ページをご参照ください。
新機能:チェック付きキー(Checked keys)
マップのデストラクチャリングにおいて、必須キーが存在するかの確認機能が大幅に強化されました。
- 新しいバリアントの導入
/:keys!
/:syms!
に「チェック付き」バージョンが追加されました。:strs!- これらの仕様は、指定されたキーが存在しない場合に例外をスローします。
- 後置キー(&)の活用
- すべてのディレクティブにおいて、バインドされないキーを
の後に記述することで、文書化や確認目的で使用できます。&
- すべてのディレクティブにおいて、バインドされないキーを
関連チケット(CLJ)
- CLJ-2961: チェック付きキーの実装
- CLJ-2960: チェック付きキーに対応した Specs
- CLJ-2949:
のバリアントget
の導入(キー未発見時の報告対応)req! - CLJ-2954:
/let
/loop
でのlet*
をローカルバインディングとして使用することを禁止&
その他の変更点(1.12.5 以降)
- PersistentHashMap の最適化
- キーのみでワイドールな
は、サイズが 8 から 64 に拡張されるまでPersistentArrayMap
に移行しません。PersistentHashMap - この範囲では PAM アイデンティティスキャンが PHM ルックアップよりも効率的であり、単一実装への統合により最適化が可能になりました。
- キーのみでワイドールな
- 静的イニシャライゼーション定数
修飾子を削除しました(CLJ-2891)。ACC_FINAL- これは Java バイトコードベースライン移行に伴う新しいバリデーションチェックへの対応です。
- 依存関係の更新
- ランタイムおよびテスト用の依存関係を最新バージョンにアップデートしました。
起動方法
deps.edn
の設定
deps.ednプロジェクトの
:deps セクションを以下のように更新してください。
{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha1"}}}
コマンドラインから REPL を起動
Clojure CLI(どのバージョンでも可使用)で以下のコマンドを実行します。
clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha1"}}}'