Hatena::Diary

TokuLog 改め だまってコードを書けよハゲ このページをアンテナに追加 RSSフィード

Perl5.10 の非互換な変更について

基本的に perl5.8 と後方互換はありますが、perldelta に書いてあるような明示的な非互換の変更も入っているので要注意だったりします。

perl5.10 がリリースされた直後に自宅のサーバインストールして、Catalyst, Plagger あたりを普通に perl5.10 を動かしていますが、まったく問題ありません。なので、ちゃんと作ってあれば問題はなさげ。

warnings.pm が Carp をロードしなくなった

perl5.10 の変更で最初にはまったのは ingy's XXX.pm で、こいつはテストが通りません。原因は

warnings プラグマは Carp をロードしなくなります.

The warnings pragma doesn't load Carp anymore.

http://fleur.hio.jp/perldoc/perl/5.10.0/pod/perl5100delta.mix.html

この変更によるものです。この変更はたとえば

use warnings;
Carp::croak "oops";

のようなコードに影響を与えます。

まあ、元々 require Carp しないで Carp::croak 呼んでるのがおかしいので、この変更はほとんど問題ないと思います。(ちなみに RT のチケット登録済)

unpack が flagged utf8 のときは文字単位に処理するようになった

perl5.10 では flagged utf8 を unpack したときの挙動がことなります。つまり、デフォルトで flagged utf8 string に対する unpack が文字単位となります。use bytes すれば依然の挙動に戻せますが。

% perl510 -E 'say unpack("H*", "\x{222e}")'
2e
% perl -E 'use bytes; say unpack("H*", "\x{222e}")'
e288ae
% perl508 -e 'print unpack("H*", "\x{222e}"), "\n"'
e288ae

これは考えてみればごくまっとうな話なので、perl5.8 のバグが修正されたということだと思います。

まとめ

perl5.10 で一部非互換な部分がありますが、perl5.8 のバグっぽいもので*たまたま動いていた*コードが、perl5.10 で仕様バグが修正されたために動かなくなっているというケースが多いようです。

開発効率がn倍になるというのは

今までが駄目すぎただけ、という場合が往々にしてあるよね。

Catalyst のフック機構について

http://mt.endeworks.jp/d-6/2007/12/re-catalystnext.html

このへんみてて思いだしたんですが、Catalyst のフックはあんましイケてないところがあると思います。

Catalyst 関連のブログをみてると、結構プラグインのロード順でハマってる人が多くて、「このプラグインの後にこのプラグインをロードしなくちゃいけない」とかいうのが多い。

これはもう、純粋に Core の問題で、フックポイントを増やすしかない。ので、増やしたらいいんじゃないかと思うわけだが。

Sledge では Authorizer, Session, decode, etc. は特別扱いして、別のフックポイントになってるから割とそういう問題が少ない。


それとは別に、フック機構として NEXT が嫌いなのは、Catalyst の方はプラグインつくったことないので DBIC の方のはなしなんですが。

個人的には DBIC より CDBIプラグイン機構の方が好き。それは多分慣れの問題もあるので、一概によしあしの判断ができないのですが。

即物的に嫌いな理由が3つがあって

  • croak したときの file name/line number 表示が本来表示して欲しいものじゃなくなる
  • インターフェースがどういう風になってるのかはっきりしろよ(←これはDBIC固有の問題かもw)

ってあたりかな。

あとはまあ、継承ツリーの中にプラグインがまぎれこんでいるのがおちつかないという噂もありますが。これは単に自分の意識の問題かもなあ。


ちなむと、Sledge の場合だと、BEFORE_* と AFTER_* という2つのフックポイントに基本的に別れてるので、楽。


実は、俺は NEXT が嫌いなんじゃなくて CatalystDBIC のフック機構が嫌いなだけなのかも。


なんか DIS ろうかと思ったけど思ったほど DIS になってないね。

もしかして、この気持ちって恋?


なんかアレかも。「Gカップ以上のおっぱいきもちわるい」みたいなのと同じ感覚かも。

まとめ

Catalyst は乳輪がでかすぎる