2009-06-01から1ヶ月間の記事一覧

Multi-threaded perl vs. Single-threaded perl

perl5 ithread についての個人的な見解。そして Coro について。(tokuhirom)より ithreads を有効にしてコンパイルするだけで perl インタープリタの速度が低下する[要出典] これをちょうど試そうと思っていたところなのだった。ナイスタイミング。結論から…

Released CvGVs could cause SEGV

型グロブの内部表現であるGVは,そのシンボルで表現されるグローバルなスカラー(SV),配列(AV),ハッシュ(HV),サブルーチン(CV),ファイルハンドル(IO)などのオブジェクトを所有するオブジェクトである。 この「所有」とは,実際にSVへの参照(ポインタ)を持…

Using XS code template for Class::MOP

XS code template法を使ったアクセサジェネレータをClass::MOPに実装してみた。 #47031 Makes simple readers to install easily 現在(0.86)はアクセサを定義するためにprehashed_keysテーブルをはじめとしてソースコードのさまざまな部分を修正しなければな…

A note about Devel::PPPort 3.18_01

Devel::PPPortに大きなパッチを送り,3.18_01に取り込まれた。ppportはパッチの作り方が特殊なので記録しておく。まず,ppportにはHACKERSというドキュメントがあるので,パッチを書く際には目を通すのが望ましい。さてHACKERSによれば,ppport.hはparts/inc…

Don't write "HTTP::Engine::Response"

HTTP::Engine::Responseと書かなければならいのがなんだか煩わしい。 HTTP::EngineのSYNOPSISより: sub handle_request { my $req = shift; HTTP::Engine::Response->new( body => Dumper($req) ); } これを↓みたいに書きたい。 sub handle_request { my($r…

The history of wantarray()

void context + BEGIN の horror 的ななにかで指名されたので答えるよ。 疑問点をまとめると以下の二点ということでいいですか。 なぜ特殊コードブロックの呼び出しコンテキストは不定とされているのか なぜ特殊コードブロックが実際にはスカラーコンテキス…

pointless() in Perl

js/scheme/perl/ruby/C - この世で最も役に立たない関数をPerlで: #!perl use strict; use warnings; sub pointless{ printf "Turning off myself = 0x%X\n", \&pointless; undef *pointless; }; pointless; pointless; 結果: Turning off myself = 0x8CEA…