2006-09-15

Error.pmのバージョンが上がっててびっくりした。

 メンテナさんが変わったのですね。

 具体的に何が変わったのかはドキュメント読んでませんが。とりあえずError::Simpleが付くようになったのが素敵(笑)。

 そーいやPerl6の例外処理はどうなってるんでしたっけ。

 まるごとPerl!のPerl6特集でも触れられてなかったのが気になるところ。

Parrotがレジスタマシンなのは今のPerlレジスタマシンだからだと思ってました。

 まるごとPerl!のParrotの記事に「Parrotは仮想マシンとしては珍しくレジスタマシンで」的なことが書かれてましたが、それは単に既存のPerlレジスタマシンだからだと思ってました。ソース読んでないから違うかもしれないけど。

 Perlのサブルーチンは

sub foo {
  my ($bar, $baz) = @_;

}

foo($hoge, $fuga);

――とか書きますが、@_は$hoge,$fugaそのものなので、これってレジスタ渡しじゃん、と*1。サブルーチンの呼び出しにレジスタ渡しを使うんだから仮想マシンレジスタマシンになってるじゃろ、と思ったわけです。

 ……そーいや戻り値はどうしてるんだろ。ブロックの最後で評価されたものが戻り値になってるので、常に最後の演算結果を保存してるスクラッチパッドみたいなのがあって、それを参照してるのかな*2

*1:スタック渡しでもいいけど、その場合は引数が全部参照アドレスってことになるのでスタック渡しの旨味がないような気がする。

*2:でもソースを読んで確認したりはしない。