タグ

ブックマーク / pub.ne.jp (7)

  • wakaponさんの超☆Perl備忘帳: DynaLoader.pm XSLoader.pm newXS

    DynaLoader.pmとXSLoader.pmまわりのお話.動作の仕方や,両者の違いなどを見ていく.参考にしたのはperl5.10.0のソースツリー. 1. XSUBとnewXS DynaLoaderの質はXSUBなので,まずはそのあたりから見ていく.XSUBを使ったモジュール(=Pure-Perlじゃないモジュール)を作成するときには,DynaLoader.pmやXSLoader.pmを使う.例えばthreads.pmの場合,冒頭に以下のような記述がある. # Load the XS code require XSLoader; XSLoader::load('threads', $XS_VERSION); これでXSUB(単にCのサブルーチン; XSコード)をPerl処理系に組込んだことになる.この「組込む」という工程には,newXSが使われる.例えばthreads->creat

    dann
    dann 2009/05/20
  • wakaponさんのよく☆ある☆ふつーの備忘帳: おすすめの1本

    acmポータルでPerlネタの論文を探していたら,Perl5 Internalsに触れている論文を発見しましたので紹介いたします.Perlの内部構造について知りたい方は目を通しておくとよいかもしれません.処理系の内部仕様と実装(5.8.8)の話が文章としてまとまっており,分かりやすい内容となっております.Extracting Facts from Perl Code (acmポータル内のリンク)Daniel L. Moise, Kenny WongReverse Engineering, 2006. WCRE '06. 13th Working Conference上のリンクからですとお金払ってみてくださいーとか出てくるので,「Extracting Facts from Perl Code」でぐぐると著者の方が原稿をpdfで公開なさっています.PerlGuts IllustratedやPe

    dann
    dann 2009/02/07
  • wakaponさんの超☆痛々しいPerl備忘帳: threads.xsめもめも

    threads.xsで使われているインタプリタスレッドの構造についてまとめたものをめもめ.最初にPerlithreadsの概要について説明してから,管理構造,提供されるメソッド,マジックについて説明していく. 1. Perlのスレッドの概要 Perlのスレッドはインタプリタスレッド(ithreads)と呼ばれる.スレッドのモデルはネイティブスレッドモデルである.1つのインタプリタスレッドは,1つのネイティブスレッド上で実行される.1インタプリタスレッドの親スレッドから指定されたサブルーチンは,インタプリタスレッド上に用意されたインタプリタインスタンスで実行される. スレッド間でのデータ共有は明示的に行う.1つのインタプリタスレッドから新たなスレッドを生成した場合,親スレッドのインタプリタインスタンスの内容がすべて子スレッド中のインタプリタインスタンス内にコピーされる.そのため,明示的に共

    dann
    dann 2009/01/16
  • wakaponさんの超☆痛々しいPerl備忘帳: tieはmagicに包含されるのめもめも

    tieとmagicについて自分なりに消化するためのめもめも.両者の根底にある質は,ある変数へのアクセス動作に対し,hookの仕組みを与えるということ.この観点からtieとmagicについて見てみる.まずtie.hook機構をオブジェクトで包み込んだものをPerl変数と結びつける.パッケージと変数が結びつくことはhookのコードが散らばらないためにそう構想されたであろうということであり,結びつくということが質ではなく,hookできるということがじゅーよう.tieはPerlプログラマがふつーに使える.hookできる動作は,変数の種類によって異なる.どの変数に対し,どんな動作をhookできるかは,Tie::Scalar・Tie::Array・Tie::Hashなどを見るとインタフェースが載っている.次にmagic.こちらはtieとは違い,XSUBや処理系内部でハイパー使われている.tieのh

    dann
    dann 2009/01/11
  • wakaponさんの超☆Perl備忘帳: XS xsubpp Dynaloader MakeMaker typemap

    XSをまったく使ったことが無かったので試してみることにした。XSUBをPerlに組込むわけではないので、xsubppで出力した結果(XSUB)を見ながらにやにやするにとどまる。 まずは、MODULE、PACKAGE、PROTOTYPE、INPUT、PREINIT、CODEから。今回は引数スタックをPPしないので、ただのCODE。以下に試したXSを示す。 hoge.xs MODULE = HOGE   PACKAGE = HOGE char * hoge_hello (num) PROTOTYPE:$ INPUT:    int num; PREINIT:    int i;    static char *no = "no";    static char *ok = "ok"; CODE:    if (num < 0)    { RETVAL = no; }    else    {

    dann
    dann 2008/12/30
  • wakaponさんの超☆Perl備忘帳: Perl サンドボックス Safe.pm

    5.10.0のlibディレクトリをあさっていて、Safe.pmなる標準モジュールを発見したので使ってみる。Safeがどんなモジュールかは、Nameのところにある1文がすべてを示している。 Safe - Compile and execute code in restricted compartments 制限された仕切り部屋でコンパイルと構文木の実行を行う。要するに、危険と思われる機能を取り払ったサンドボックスを作って、その中でコードを実行する。おそらくこのモジュールは、安全かどうかわからないPerlプログラムを隔離された場所で実行したいなー、というときに使われる。 実際にモジュールの機能を実感してみる。まずは最初の一歩として、Safe.pmのrevalメソッドを使ったサンプルプログラムの実行から。(See also ファイル指定版のrdoメソッド) revalメソッドの利用例 # 実行環

    dann
    dann 2008/11/15
  • wakaponさんの超☆Perl備忘帳: Shibuya.pm#9 感想 めもめも

    すでに2日経ってしまって報告ですみません.6/25(水)に開催されたShibuya.pmにて,PerlMachineという題目で20分間の枠を用意していただきまして,発表を行いました. 会場のセッティングをしていただいたIIJ様,全体の取り纏めを行ったtakesako様,動画中継のcoji様,そしてスピーカー方々に感謝申し上げます.まとめ動画ページもあるようです.すごい.あと発表内容をまとめてくださった方もいて,なんだかものすごい的確でこのまま自分のプレゼンを改良するときに使えそうないきおいです. 発表おわったあとになにも分からないまま,集団についていってご飯べました.すみませんすみません.ごちそうさまでした.顔とお名前が一致しなかった方が大半だったということを告白します.すみませんすみません.というか自分から挨拶しないとだめだよなあ 発表スライドなど ということで自分の分をSlideS

  • 1