mutsu v0.22.0 が出ました - UUID/JSON::Tiny の bundle
前回リリース(v0.21.0, 2026-08-13)から今回(v0.22.0)まで、471件のPRがマージされました(fix 209 / docs 156 / feat 66 / maintenance 27 / perf 7)。
目玉: ADR-0019「メソッドディスパッチ統一」が完了
今回のリリースで最大の分量を占めたのが、docs/adr/0019-compiled-declarations-and-unified-method-dispatch.md の完遂です。長年 tree-walk 時代から残っていた runtime/methods.rs のスローパス依存を解消し、メソッド解決を単一の正規テーブル(canonical user_candidates)に統一するリファクタリング。E10〜G2 まで数十枚のスライスPRに分割して段階的に移行し(shadow-check → dual-write → cutover → 旧経路削除、という定石パターンを徹底)、ClassDef::methods の重複テーブルを完全削除するところまで到達しました。表には出にくいですが、今後の機能追加が乗る土台を固めた回、という位置づけです。
新機能
- バンドルバッテリー追加:
JSON::Tinyを本物の実装に切り替え(ネイティブ実装は高速パスとして残存)、新規にUUID(v4)をバンドル - 言語機能:
trait_mod:<does>が呼び出し可能に(呼び出し元変数への書き戻し対応)is repr<...>の山括弧トレイトとnativepackage declaratoris TraitName<word list>というトレイト引数の糖衣構文- ADR-0044: コアの listop(
map/grepなど)が構文書き換えではなく本物の呼び出し可能ルーチンに - ADR-0040: 配列/ハッシュ要素を代入サイトでitemize
- ADR-0037: EVALのコンテキストフレームが戻り値の種類を正しく分類
- ADR-0033/0034: WhateverCode の優先度分類、Seqのreificationとconsumptionの分離
- ADR-0036:
:p/:kvサブスクリプトのアダプタがライブなelement containerを返す - ADR-0029: 組み込み例外クラス(
X::...)の継承関係をrakuの実挙動から機械的に採取して反映 use strict相当の未宣言スカラー変数の読み取りチェック
パフォーマンス(7件)
eval_block_valueのコンパイル結果をブロックごとにキャッシュして再利用$*DISTRO/$*PERL/$*RAKU/$*VM/$*KERNELなどのmagic varsを遅延初期化- Match オブジェクトの不要な強制materializeを3箇所排除
- JIT Tier A が state-var初期化オペコードでbailoutしていたのを解消
map/grep/.firstのインラインループコンパイルをクロージャリテラルの同一性でキャッシュ
バグ修正(209件)
クロージャキャプチャ、role/mixin合成、supply/async、正規表現、例外伝播など全方位にわたる修正。 claude に worktree 切って並列で直してもらったらどんどん処理してくれましたよ、と。
今後の方向性
roast はもう頭打ち感あり。rakudo がとおせてるケースは全部とおせてるので。 言語機能としても概ねできている。
いくつか battery included と言うにはかけてるライブラリがあるので、そのあたりの充実が必要か。Logger, TOML, gzip, bzip2, zip, tar のサポートなど。 あとは細かいバグの ticket がたくさんあるので、それをやっていくという形。
Published: 2026-08-22(Sat) 09:07