2008-08-01から1ヶ月間の記事一覧

LL Future

明日のLL Future行きます。Larry Wallを一目だけでも!

macro.pm

PerlVMを直接いじるのは大変だが,PPIとソースフィルタを使えば比較的簡単にPerlを拡張できるかもしれない,と思ってモジュールを書いてみた。 macro - An implementation of macro processor このmacro.pmはcpp(1)に似たマクロを提供する。 use macro add =…

PerlIO実装メモ#3 PerlIOレイヤのデータ構造

PerlIOのデータ構造は以下の通り。 typedef struct _PerlIO PerlIOl; typedef struct _PerlIO_funcs PerlIO_funcs; typedef PerlIOl* PerlIO; struct _PerlIO { PerlIOl* next; /* Lower layer */ PerlIO_funcs* tab; /* Functions for this layer */ U32 fl…

PerlIOのメモリアロケーション

PerlIOのデータ構造の前に。 CレベルのPerlIO*については、PerlIOシステムがメモリ管理をしてくれる。そのメモリ管理を行うのがPerlIO_allocate()で、これが呼び出されると利用していないPerlIO*ポインタを探して返す。利用されていないPerlIO*ポインタがな…

no indirect; / no indirect ':fatal';

間接オブジェクト構文で警告を出したり致命的エラーを出したりするプラグマ。おなじみのPL_checkハックで実装されている。 以下のようなありがちな実行時エラーをコンパイルエラーに変えることができる。 use Test::More tests => 2; use Foo; no indirect '…

PERL_NO_GET_CONTEXT

XSモジュールを書くときはPERL_NO_GET_CONTEXTを試してみるといいようだ。 perlgutsによれば,perlのビルド時にPERL_IMPLICIT_CONTEXTが指定されているとき,PERL_NO_GET_CONTEXTマクロをperlヘッダの#includeの前に定義すると効率がよくなる,とある。この…

open()の改良

Perlのopen()をマスターするのは大変だ。perldoc perlfuncのopenの項はすさまじい長さだし,perldoc perlopentutというopenのチュートリアルも,単なるチュートリアルなにものすごく長い。しかもPerlIOという機能のおかげでopen()そのものも自由に拡張できる…

Ruby.pm実装メモ#0 目次(予定)

6月にRuby.pmについての発表を2度した。それはそれで完結はしたのだが,時間が経つことでいろいろ考えがまとまったこともあるので,補足記事をいつか書きたい。いつか。 CライブラリとしてのRuby Rubyのメソッド呼び出し

PerlIO実装メモ#0 目次

デストラクタ PerlIOで出来ること PerlIOレイヤのデータ構造 PerlIOのメモリアロケーション PerlIOメソッド俯瞰 コンストラクタ/イニシャライザ PerlIO::scalarを読む 順番はいずれ整える。 9月になるとしばらく忙しくなるだろうから,8月中には書ければいい…