タグ

xsに関するsyohexのブックマーク (11)

  • IV, NV などを B モジュールで調べる - 日向夏特殊応援部隊

    makamaka さんが YAPC Asia 2010 にて発表した XSからPPへ - YAPC::Asia Tokyo 2010 に既に書いてあるんだけど、備忘録を兼ねて。 JSON にする際に違いが出てくる訳ですがまずは論より証拠。 $ perl -MJSON -e 'warn encode_json(+{ foo => 1, bar => "1", baz => 0 + "1" })' {"bar":"1","baz":1,"foo":1} at -e line 1.これらは IV なのか PV なのかばっちり判定してくれる訳ですね。API なんかのユースケースだとこの辺りを厳密にやらねばならないので、この辺りの制御はちゃんとやらないといかんのです。 その前に Devel::Peek で中を見てみると、 $ perl -MDevel::Peek -e 'my $i = "1"; D

    IV, NV などを B モジュールで調べる - 日向夏特殊応援部隊
    syohex
    syohex 2017/02/10
  • MinillaでModule::Build::XSUtilを使う - WebService::Blog->new( user => ’hide_o_55’ )

    もう先週の話になりますが、拙作 Module::Build::XSUtilがサポートされたMinilla 0.7.0がリリースされました。 Module::Build::XSUtilとは? Module::Build::XSUtilはModule::Install::XSUtilと同等の機能をModule::Buildで実現するためのモジュールです。以下の機能があります。 コンパイラのC99サポートのチェック コンパイラのC++サポートのチェック ppport.hの生成 Perlのバージョン間のAPIの違いを吸収 xshelper.hの生成 便利なマクロ、ppport.hでサポートしていないAPIのサポート デバッグオプションの付与 コンパイラの警告の有効化 MinillaでModule::Build::XSUtilを使用する方法 minil.tomlに以下のようにXSUtilセクションを

    MinillaでModule::Build::XSUtilを使う - WebService::Blog->new( user => ’hide_o_55’ )
  • Perl5 における B optree の操作方法入門 - tokuhirom's blog

    いよいよ今週から YAPC だ。YAPC にあわせて、Perl5 の内部構造を復習できるエントリーを書いたのでご一読いただきたい。 Perl5 hack においては、XS をつかった B optree の操作が楽しい。B optree というのはいわゆる AST(抽象構文木) である。Perl5 は byte code interpreter などではなく昔ながらの AST をそのままなめるインタプリタである。であるから、この B optree を操作すれば、簡単にインタプリタの挙動を変えられるというワケ。 一方で、B optree の操作については、あまり知られていないし情報がすくない。日語でも情報がすくないし、英語でもまた情報がすくなく、それっぽいモジュールのコードをよみながら会得するしかないのが現状だ。 すこしでも B 初心者が、ステップアップできるように、私のもっている情報をここ

    syohex
    syohex 2013/09/17
  • Module::Build::Pluggable::XSUtil と Minilla の相性が悪いので Module::Build::XSUtil 作りました - WebService::Blog->new( user => ’hide_o_55’ )

    Minillaを使い始めたのですが、MinillaとModule::Build::Plaggableは共にModule::Build::subclass()を使用していて、Module::Build::subclass()は多重に使えないという制約のため一緒には使えません。 XSモジュールではModule::Build::Pluggable::XSUtilを使っていたため、Minillaでも同等のことを行うためのモジュール Module::Build::XSUtil を作りました。 GitHub MetaCPAN Minilla専用というわけではなく、素のBuild.PLでも使えます。 なお、オプションの名前はModule::Buildの流儀に近いかたちにアレンジしています。 use strict; use warnings; use Module::Build::XSUtil; my $

    Module::Build::Pluggable::XSUtil と Minilla の相性が悪いので Module::Build::XSUtil 作りました - WebService::Blog->new( user => ’hide_o_55’ )
  • minilla を使って cocoa な xs module を書く - soh335 memo

    環境を作るにはまず、 minil new -p XS Cocoa-Hogeをしたのち builder/MyBuilder.pmbuild するようにします package builder::MyBuilder; use strict; use warnings; use parent qw(Module::Build); use File::Copy; sub new { my ($self, %args) = @_; $self->SUPER::new( %args, extra_compiler_flags => ['-Wall'], extra_linker_flags => ['-framework', 'Foundation'], ); } sub compile_c { my ($self, $file, %args) = @_; (my $m_file = $file)

    minilla を使って cocoa な xs module を書く - soh335 memo
  • https://paberish.me/t/68KV

    syohex
    syohex 2012/12/27
    iPhoneアプリからしか読めないのが辛い。kindleあたりでなんとかならないだろうか・・・。
  • 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)
    syohex
    syohex 2010/05/20
  • にひりずむ::しんぷる - 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 がコケてるのでちょろっと対応した次第。まだ

    syohex
    syohex 2010/05/10
  • 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

  • Text::ClearSilver - New ClearSilver binding in Perl - Islands in the byte stream (legacy)

    id:Craftworks さんから仕事をもらいまして、ClearSilverのPerlバインディングを書きました。 http://search.cpan.org/dist/Text-ClearSilver/ git://github.com/Craftworks/Text-ClearSilver.git ClearSilver はCで実装されたテンプレートエンジンで、高速だという話はあるものの、Yapc::Asia 2007で紹介されたほかはそれほど話題にも上らず、私も今回の話が来るまでは知りませんでした。 もっとも、Perlの世界で流行らないのは当然です。ClearSilver のディストリビューションにはPerlモジュールが含まれているのですが、これの質が非常に低く*1、Perlデータ→HDFデータ*2の変換も用意されていないため、Data::ClearSilver::HDFを使う必

    Text::ClearSilver - New ClearSilver binding in Perl - Islands in the byte stream (legacy)
    syohex
    syohex 2010/03/31
    ClearSilverのバインディング
  • XS基礎文法最速マスター - Islands in the byte stream (legacy)

    元ネタ:Perl基礎文法最速マスター(id:perlcodesample) XSを始めるための手順といくつかの要素の解説です。C言語をある程度知っている人でも,これを読んだだけでXSの基礎をマスターしてXSを書くことができるようにはなっていません。リファレンスでもありません。 XSとは,狭義ではPerlでエクステンションを書くためのマクロ言語の名前ですが,広義ではエクステンションを書くための技術の総称です。ここでは,広義のXSを俯瞰します。 XSはいろいろと特殊なのでテンプレは無視で行きます。 目次: h2xsで空のディストリビューションを作る XSファイルの構成 スレッドコンテキスト SVファミリ GCとスコープ さらなる学習のために h2xsで空のディストリビューションを作る 以下のコマンドで空のXSディストリビューションを作ることができます。 h2xs -A -b 5.8.1 -n

    XS基礎文法最速マスター - Islands in the byte stream (legacy)
    syohex
    syohex 2010/02/03
    Perl XS基礎
  • 1