Pathname のメソッドが Ruby スクリプトから C 拡張ライブラリに移動されているのは何故なのか問題

数日前にも twitter でなんでなんだろうって呟いたのですが、このところ akr さんが1日1コミット(朝晩の2回のこともある)という感じで標準添付ライブラリ Pathname のメソッド(File や FileTest へそのまま委譲しているもの)を Ruby スクリプトでの定義から C の拡張ライブラリでの実装に移動されています。

これって何故なんでしょう。

他処理系のことを考えると Ruby スクリプトのままのほうが良いように思うのです。

Ruby で書かれたメソッドを拡張ライブラリにすると早くなるというイメージがありますが、移植されているのは主に funcall ですぐ別のメソッドを呼んでるのでそれほど早くはならないんじゃないかなと。また兼雑記の このあたり で書かれているように C と Ruby の世界を行き来すると実はかえって遅くなることも……と思ったのですが委譲先も C で実装されたメソッドなのでこれは関係ないかもしれませんね。またいずれにせよファイルシステムへのアクセスを伴なうメソッドなのでこの部分の速度は重要ではないかも。速度については計測しないと本当のことは分からないですね。

他処理系については、Rubinius や MacRuby では一応 C の拡張ライブラリも動くように対応されているらしいです。JRuby のことはよく知りません。Rubinius は正確な GC のためにハンドラを挿入する処理があったりして遅いらしいので、C の拡張ライブラリを書くより Ruby で書いて VM の性能に期待する方針みたいです。MacRuby も同様だと思います。なので Ruby スクリプトで済むものはそのほうが良いと思います。もちろん他処理系は元の pathname.rb を保持していれば済む話なので気にしなくていいんだということなのかもしれません。けど r29138 みたいに IronRuby のための修正が入ったりするので一応他処理系のことも気にしているようにも思えます。

何かわたしが見落してる拡張ライブラリ化のメリットがあるんでしょうか。