タグ

xsに関するTMTLのブックマーク (8)

  • Text::AAlibを書いています。 - Shohei Yoshida's Diary

    XSを書く練習の続き。 前回はごりごりとXSで書くというものだったので、 今回はライブラリのバインディングにチャレンジ。 扱うライブラリは An ascii-art library というアスキーアートを作るためのライブラリ。 開発リポジトリ syohex/p5-Text-AAlib · GitHub 現状 必要最低限な機能だけとりあえず実装しました。 機能的にドキュメント読んだだけではよくわからないところが あるので、それについてはソースを読んで充実させていく予定です。 テストの書き方も今一つわかっていないので、他のライブラリの 実装も見て勉強する必要がありそうです。 #!perl use strict; use warnings; use Text::AAlib; use Imager; my $file = shift or die "Usage: $0 image"; my $im

    Text::AAlibを書いています。 - Shohei Yoshida's Diary
    TMTL
    TMTL 2011/11/14
  • List::UtilsBy::XSが書けました。 - Shohei Yoshida's Diary

    List::UtilsBy::XSを書いてます。 - Life is very short の作業がとりあえずひと通り終わりました。 List::UtilsByのテストユーティリティがなぜか無限ループして しまうことや、Lightweight Callback APIの制限があったり しますが、List::UtilsByから持ってきたテストは概ね通っています。 リポジトリ syohex/p5-List-Utils-By · GitHub ベンチマーク Perl 5.14.1の結果は以下のようになりました。 Benchmarking List::Util and List::UtilsBy::XS Bench: sort_by Rate pp xs pp 7729/s -- -37% xs 12217/s 58% -- Bench: nsort_by Rate pp xs pp 9050/s

    List::UtilsBy::XSが書けました。 - Shohei Yoshida's Diary
    TMTL
    TMTL 2011/10/06
  • Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)

    Perlではメモリリーク検出ツールがいくつか開発されているので、top(1)の結果を眺めるよりそういうツールを使うほうが楽である。 さて、メモリリークが発生しているとき、その可能性としてはだいたい以下の4つが挙げられる。 Perlレベルでの循環参照 グローバル変数に値をどんどん足しているとき*1 XSレベルでリファレンスカウントの管理ミス XSレベルでmalloc()したメモリの管理ミス この1-3についてはすべてPerlインタプリタ内の出来事であり、Test::LeakTraceを使って検出できる。4を検出するのは難しいが、Test::Valgrindが役に立つ。 Test::LeakTraceのSYNOPSISは歴史的経緯によりごちゃごちゃしているが、テストで使うべき関数はno_leaks_ok()とleaks_cmp_ok()だけである。 たとえば、以下のようにして使う*2。 #!p

    Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)
    TMTL
    TMTL 2011/06/19
  • にひりずむ::しんぷる - Win32::Unicode を XS 化させてみた

    MSWin32 で Perl を使っている人にしか価値のない Win32::Unicode ですが、ちょっと前に 0.19 をリリースしました。 今回は、cygwin 対応のコードが入ってます。 cygwin では 1.7.1 あたりから、UTF8 が基調となっていますが、それはターミナルだけではなく、Perl でもそうです。恐らく cygwin の API が UTT8 化されたので、 Perl でそいつを呼び出す場合もそうなったんでしょう。(てきとーです) 何はともあれ、最近の cygwin-perl では、Win32::Unicode を使わずとも Unicode ファイルが扱えたりする(CORE::readdir で UTF8 で帰ってきたりする)ので、使う意味はないんですが、とりあえず CPAN-Testers でいつも cygwin がコケてるのでちょろっと対応した次第。まだ

    TMTL
    TMTL 2010/06/05
  • PresenTitlePlaceHolder

    TopicsPlaceHolder SectionTitlePlaceHolder TIME rest time current/total

    TMTL
    TMTL 2010/05/31
  • 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)
    TMTL
    TMTL 2010/05/19
  • naoyaグループ - naoyaの日記 - XS

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

    naoyaグループ - naoyaの日記 - XS
    TMTL
    TMTL 2010/03/23
  • おさかなラボ - [XS]Perl変数とPerl構造体の対応について

    当はPVに限った話をがっつりしようと思ったんだけど、順序が思いっきりperlgutsとかぶるので止めました。 繰り返すようですが、XSの中身というのは、始めたばかりの人にとっては何がなんだかさっぱり分からないと思います。特に配列やハッシュやリファレンス、オブジェクトなどはどうやって扱えばいいのか不安に思っている方は多いのではないでしょうか。今日はその話を簡単にします。 これらは、Perl内部では構造体で実現されています。主に次の構造体が用意されています。 SV スカラ値 AV 配列 HV ハッシュ値 RV リファレンス値 構造体って何?っていう人はK&Rを買って読んで下さい。Cの概念です。僕がXSについて書くときは、Cについての一通りの予備知識があることを前提とします。Perlの値には他にもグロブや無名関数などがありますが別項に譲ります。 次に不安なのが、これらの操作でし

  • 1