2017年3月28日のブックマーク (2件)

  • Perl Magicは意外と簡単に使える - Islands in the byte stream (legacy)

    PerlのC APIにはMagicという考え方があって,任意のSVにフックとプライベートデータを付けることができる。このAPIはXSからでも利用できるのだが,難しそうで敬遠していた。しかし,試してみると意外と簡単に使えることが分かったのでメモしておく WeakRef::Auto http://search.cpan.org/dist/WeakRef-Auto/ 使い方は意外と簡単で,フックしたい操作のためのメソッドを入れたVirtual Tableを用意して,sv_magicext()を呼び出すだけ。 まずVirtual Tableと識別のためのユーティリティをCセクションに置く: #define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" typedef SV* SVREF; st

    Perl Magicは意外と簡単に使える - Islands in the byte stream (legacy)
    codehex
    codehex 2017/03/28
  • XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai

    id:TAKESAKOさんの好意で出させてもらったので、適当にロギングします。 はじめてのXS / id:hirose31さん XSってなに? PerlとCをつなぐための言語&インタフェース Foo.xs → xsubpp → Foo.c → Cコンパイラ → Foo.so Perlからは、XSLoaderやDynaLoaderでFoo.soを読み込む なぜXSを使う? Cのライブラリを使いたい パフォーマンス向上(Cache::Memcached::Fast 等) Perlの内部をいじくり倒す(autobox*1 等) XSを書いた動機 → forkしまくりたくなかった ドキュメント perlxstut, perlxs, perlguts, perlapi h2xs or module-starter (Module::Starter::XSimple) で始める 外部のsay_hell

    XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai
    codehex
    codehex 2017/03/28
    これが噂のレジェンド.pmか...