去年に引き続き記録しておきます。
RBS v3.9リリース
マジックコメントresolve-type-names: falseの導入
RBSの型名は、基本的にはRubyと同じよう省略できます。 この省略された名前はいわば相対パスだとすると、内部的に絶対パスとして名前解決して扱われています。 この名前解決は割と高速なのですが、積み重なると重くなっていくため、名前解決フェーズ自体をスキップさせることがマジックコメントをつけるだけで可能になりました。
ここに魔法はなく単にスキップするだけで、本当に名前解決できているか関与しません。
プログラムによって生成されたRBSを名前解決済み(Barではなく::Foo::Barにする)で出力し、そのファイルにresolve-type-names: falseをつける運用を意識しています。
Orthosesでは、オプションをつけるだけで全て名前解決済み、かつマジックコメント付きでRBSファイル出力できるようにしています。
アノテーション機能の強化
メソッドに%a{deprecated}とつけると、廃止予定のメソッドであるマークをつけることができるようになりました。Steepを使用すれば、廃止予定のメソッドをエラーとして指摘したり、LSPと連携して廃止予定メソッドのように打ち消し線で可視化することができます。
これに合わせて定数やmodule/class/interfaceなどにも%a{deprecated}がつけれるようになりました。
さらにmethod単位ではなく、overload単位で細かく%a{deprecated}をつけることができるようにもなりました。
バリデーションの強化
以下3つのメンバーについて、同じスコープ内で重複が許されないようになりました。
RBS v3.10 リリース
v3.10もリリースされています
Parserのpure C化
pure C化によって、rustやjrubyなどからもRBSをパースすることが可能になります。その実装も進められており、RBSの更なる利用拡大が期待されます。
Ruby v4対応
新メソッドや細かな型の変更、pathnameのcore化やcgiのgem_rbs_collection移動などの対応が主です。要求するrdocの最低バージョンも上がっているので、機能を利用している場合はご注意ください。
RBS v4.0が準備中
内部APIに破壊的変更の入った新バージョン、rbs v4が準備されています。 目玉機能はrbs-inlineの統合です。現在のrbs-inlineではRBSファイルを生成してからsteepなどで型チェックに利用していますが、統合されればsorbetのようにRubyファイルの変更だけで型を扱うことが期待できます。楽しみですね!