YAPC::Asia 2010 Tokyoで発表しました

至らない点は多々ありましたが無事発表を終えることができました!ありがとうございました!

ちょっと捕捉します。
まず会場の質疑応答から(スライドにも簡単に追記しました)。

Q. テンプレートをPerlコードに落とし込んでperlに実行させるというモデルもあると思うが、敢えて独自VMを実装した理由は?
A. たしかに、Perlコードに落とし込むテンプレートエンジンはあり、Template::ToolkitやText::MicroTemplateなどはそうしています。しかしPerlは汎用のインタプリタであり、テンプレートのレンダリングに特化しているわけではりません。Xslateは汎用性を犠牲にし、高速化を図っています。特に、出力バッファに対する文字列の連結に大きな差があります。なので、独自VMの実装はそれなりの効果はあると思います。

Q. Xslate上でPerl6を実装できるか?
A. 前述の通り汎用のVMではないので、普通の言語を実装するのは無理があります。新しいプロジェクトとして始める方が早いでしょう。

Q. 他の言語でのバインディングは可能か?
A. Perl APIと密結合しているので不可能です。また、密結合しているゆえのメリットもあるので、特に言語中立なライブラリにする予定もありません。他の言語で仕様する場合は一から移植するしかありません。

また、既知の問題点や安定性についても質問がありました。これについては、現在大きな問題は確認されていないものの、数週間に一度SEGVするというバグレポートを受け取っている状態です。したがって充分に安定しているとはいえないかもしれません。仕様については今後大きな変更はないかと思いますが、ビルトイン関数など新しいキーワードの追加はありえます*1

今回のトークの前半で説明したXslateの使い方については、Web+DB Press vol.59 (2010/10/24)でサンプルコードも併せて詳しく解説してありますので、そちらもぜひご参照ください。

*1:実際、本日リリースした0.2010でもref()ビルトイン関数を追加しました。→その後0.2012でref()は廃止し、is_array_ref()とis_hash_ref()のみサポートすることにしました。