タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

perlとPerlとXSに関するclouderのブックマーク (16)

  • Every XS authors should use Test::Valgrind - tokuhirom's blog

    Every XS authors should use Test::Valgrind Test::Valgrind is a perl wrapper for valgrind(1). T::V helps to find invalid memory operation. You can use it by command line like following: prove --exec 'perl -Iblib/lib -Iblib/arch -MTest::Valgrind' t/*.t Or use it as test script. You can put it on xt/. use Test::More; use Test::Requires 'Test::Valgrind'; leaky(); Latest stable version of valgrind is n

  • Perl XS入門 - XSの基礎を学ぼう - サンプルコードPerl入門

    Perl › here XSを使ったC/C++のバインディングについて解説します。まず最初に、XSモジュールを作成する方法について解説します。 1. XSモジュールの作成 では実際にXSモジュールを作成してみましょう。XSモジュール作成コマンド、Makefile.PL、makeについて丁寧に解説しています。 XSモジュールを作成する 2. perlapi XSからPerlのデータを操作する方法にについて解説します。PerlはC言語で実装されていますが、Perlの機能をC言語から呼び出すためのAPIがたくさん用意されています。 perlapi - XSにおけるデータ操作のためのAPI 3. Makefile.PL関連 Makefileを生成するために、Perlでは、Makefile.PLというファイルを作って、ExtUtil::MakeMakerというモジュールを使用します。このExtUti

    Perl XS入門 - XSの基礎を学ぼう - サンプルコードPerl入門
  • XSでメモリークを避けるたった一つの方法 - Islands in the byte stream (legacy)

    XSでメモリリークを避ける基原則は、それほど難しくない。すなわち、作ったSV(およびSVファミリ)はすぐsv_2mortal()するのである。mortalなSVはスコープ*1から抜けるときに解放されるため、メモリリークは起こらない。つまり、あるスコープ内で新しく作ったすべてのSVをmortalな状態にしておくということだ。 この原則のもとでコードを書くと、誤ってリファレンスカウントを増やさなかったケースでは警告が頻繁に起きる。しかし、少なくともメモリリークは起こらない*2。メモリリークの検出は難しいので、警告が出るのは福音であろう。 もちろんこれは原則で、メモリリークにまつわることで覚えなければならないことは決して少なくない。 たとえば、XSUBの戻り値をSV*にするとき、sv_2mortal(RETVAL)してはいけない。これはPerlの仕様ではなくxsubppが勝手にsv_2mort

    XSでメモリークを避けるたった一つの方法 - Islands in the byte stream (legacy)
  • Module::Install::XSUtilでXSモジュール用のMakefile.PLを書く - JPerl Advent Calendar 2009

    前置き こんにちは,gfxです。好きなソースはタルタルソースとsv.cです。JPerl Advent Calendar 2009 Hacker Trackも8日目ですね。そろそろTipsを読むだけでは飽き足らず,モジュールを書きたくなってきたんじゃないでしょうか。そんなわけで,今日はModule::Install::XSUtilを紹介します。 題 皆さんの中にはよくXSを書く方もいらっしゃると思いますが,XSモジュールを含むディストリビューションはビルド環境の設定が結構大変ですよね。build_requiresにExtUtils::ParseXSやXSLoaderを指定したり,make_maker_argsにOBJECT => '$(O_FILES)'を指定したりする必要がありますし,Cコンパイラは使えるか,Cコンパイラの警告を有効にしたい,ppport.hは十分に新しいか,などなど考え

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 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    {

  • 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

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • perl - で無名再帰関数再び : 404 Blog Not Found

    2009年02月15日10:30 カテゴリLightweight Languages perl - で無名再帰関数再び これまでのあらすじから。 Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 それDevel::Caller でできるよ - TokuLog 改め だまってコードを書けよハゲ 404 Blog Not Found:perl - で(Recall()|arguments.callee()|&?BLOCK()) PerlでRecallの話 - Unknown::Programming これ、それぞれに欠点がありました。Devel::CallerはXSに依存する。弾方式はソースフィルター、id:fbis方式はいちいち自分自身をスタックに積み直している... この欠点を全て取り除く方法を発見しました。 [Run via code

    perl - で無名再帰関数再び : 404 Blog Not Found
  • Re: XSの勉強を始めるためのエントリーポイントは? - Islands in the byte stream (legacy)

    Re: XSの勉強を始めるためのエントリーポイントは? あまり参考にならないかもしれませんが,私がXSを勉強するにあたっては,CPANのモジュールのソースコードを読むより実際に書いてみるのが一番だと思います。ただし,何か特定の目的があって,そのために関係がありそうなコードを探して読む,ということは非常によくあります。 以下,思いついたことを適当に並べてみます。 自分でコードを書いてみて初めて分かることが少なくない 学ぶのに適した理想的なコードは,そう簡単には見つからない 古い書き方やおかしな書き方をしているコードも大量にあるので,そういうコードをフィルタリングするためにも,いろいろな作者のコードを読んだほうがいい 多くのコードの中から理想的な部分を抜き出して,それを身につけていく 目的とまったく関係ないコードから閃きを得ることも多い perlのソースコードをすぐ参照できるようにしておくのは

    Re: XSの勉強を始めるためのエントリーポイントは? - Islands in the byte stream (legacy)
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • モダンなXSの書き方 - Islands in the byte stream (legacy)

    PerlのソースコードはPerl言語以上に変化が大きく,それに伴ってXSの書き方もだいぶ変わってきている。新しいAPIを使ったほうが可読性がよかったり高速だったり使いやすかったりする。 たとえば,スカラー(SV)から文字列(PV: pointer valueつまりchar*)を得るAPIの変遷は次のようになっている。 /* SV*からPVを得る古い書き方 */ STRLEN len; const char* pv = SvPV(pv, len); # pvとlen両方ほしいとき const char* pv_only = SvPV(pv, PL_na); # pvだけほしいとき /* その後SvPV_nolen()が追加され,PL_naはdeprecatedに */ const char* pv_only = SvPV_nolen(pv); /* 今は*_constが追加されたのでcons

    モダンなXSの書き方 - Islands in the byte stream (legacy)
  • はてなブログ | 無料ブログを作成しよう

    27年ぶりのYUKIライブ 2024/8/11。僕は埼玉の戸田市文化会館で行われた”YUKI concert tour “SUPER SLITS” 2024”に参加した。前にYUKIの歌声を聴いたのは1997/05/27の代々木第一体育館。実に27年の歳月が経ってしまった。 なぜそんなに間が空いたのか。なぜ、それでも参加しようと思ったのか…

    はてなブログ | 無料ブログを作成しよう
  • 私的 XS メモ - IT戦記

    参考にしたサイト集 perlxs - perldoc.perl.org perlxstut - perldoc.perl.org perlguts - perldoc.perl.org perlapi - perldoc.perl.org http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 Perl XS メモ - typemap と MAGIC をからめて - daily dayflower http://pub.ne.jp/wakapon/?entry_id=1109553 http://pub.ne.jp/wakapon/?entry_id=1109664 準備 $ h2xs -A -n MyXSS Makefile.PL CC => 'g++', 型 SV スカラー AV 配列 HV ハッシュ CV コード GV グロブ RV リ

    私的 XS メモ - IT戦記
  • Perl XS メモ - typemap と MAGIC をからめて - daily dayflower

    id:tokuhirom さんが http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 で下地をつくってくださったので(perl-users.jp むけまとめも期待してます),ちょっとアドバンスドな話題を。 例題 http://www.sra.co.jp/people/m-kasahr/eb/ http://www.sra.co.jp/people/m-kasahr/eb/ の Perl binding を開発するとしましょう。 http://www.sra.co.jp/people/m-kasahr/eb/ の使い方は,たとえば次のような感じです。 EB_Book *book_pointer; book_pointer = (EB_Book *) malloc(sizeof(EB_Book)); eb_initialize_book(bo

    Perl XS メモ - typemap と MAGIC をからめて - daily dayflower
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 1