2009年10月24日(土) 13:34

Scalar::Util の xs 版と pp 版がすげかわっておよよよよ

Perlコアモジュール(5.8)の Scalar::Util ですが、これには xs 版と pp 版があって、それぞれ実装されているメソッドが違っていたりするそうです。


Scalar::Util のページにも以下のように書いてある。

Scalar::Util contains both perl and C implementations of many of its functions so that those without access to a C compiler may still use it. However some of the functions are only available when a C compiler was available to compile the XS version of the extension.
At present that list is: weaken, isweak, dualvar, isvstring, set_prototype


だから、
Scalar::Util に依存してxs版のメソッドを使っているモジュールやアプリで、うっかり xs --> pp にバージョン変えてしまったりすると動かなくなったりする。


なんか、
POEで書いてた IRC bot が急に動かなくなってそれっぽいエラーを吐いていたので、 Scalar::Util を force install したら直った(本来は Makefile.PL にオプション渡すのが良いみたい)。
たぶん、AnyEvent::IRC をインストールした時に、Scalar::Util の pp 版が入ってしまったのだと思う(何かやったと言えばそれくらいで、AnyEvent::IRC の Makefile.PL に Scalar::Util が入っていたのでそうかなとか。。。Scalar::Util はその前から xs 版が入っていたはずなんだが、っつか、Cコンパイラ入ってるので pp 版が入ったのは Config.pm で認識されなかったとかかなあ)。
まあそれ以上は追いかけていないので、見当違いの可能性も大いにある。


とにもかくにも、
うっかり起きてしまうととても怖いなあと思ったのでメモ。


参考:
解決:Scalar::Util::weakenを使おうとするとWeak references are not implementedで落ちる

このエントリーに最初のコメントを書いてみませんか?

名前  クッキーに保存 
エントリーナビ
Scalar::Util の xs 版と pp 版がすげかわっておよよよよ」は、
Perl カテゴリーの記事です。


関連エントリー
コメントをつけると出るエラー
Syntax Highlightなしでコードが読めない
お料理レシピの横断検索サイトで使ったPerlモジュール
Perl:int関数の挙動について
Perlの不思議な現象を B::Deparse で調査

トラックバック
このエントリーへトラックバックするURL (言及リンクのないトラックバックは無効です)