タグ

xsに関するlapis25のブックマーク (15)

  • はてなグループの終了日を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)

    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)
    lapis25
    lapis25 2010/05/19
  • PerlXS: sv_2mortal()やhv_store()のこと - EchizenBlog-Zwei

    そろそろXSをちゃんとやろうと思ったので、メモリ周辺のことが良くわからなくて放置していたsv_2mortal()やhv_store()のことについて調べた。 参考: perlguts http://www.kt.rim.or.jp/~kbk/perl5.005/perlguts.html 最初に結論を書いてしまうと [1: sv_2mortal()] - returnしない変数は常にsv_2mortal()を通す (揮発性をもたせる) - SVはreturnするときはsv_2mortal()を通してはダメ - AV, HVはreturnするときもsv_2mortal()を通す [2: newRV_inc()] - リファレンス変数(RV)を作るときはnewRV_inc()を 使い参照カウントをインクリメントしておく (newRV_noinc()はダメ) - リファレンス変数もsv_2mor

    PerlXS: sv_2mortal()やhv_store()のこと - EchizenBlog-Zwei
    lapis25
    lapis25 2010/05/18
  • FUJI Goro on Twitter: "グローバル変数じゃなくMY_CXTを使うことと、各種データをきちんとdupすること、ですかねえ。あとは、実際にオブジェクト生成→スレッド生成でSEGV/panicしないかのテストを。 @lestrrat: XS でスレッドセーフにする場合に気をつけることってなんなの? #perl"

  • はてなブログ | 無料ブログを作成しよう

    顔に見える?最近「送水口」が気になるという話 「送水口」が気になる今日この頃 最近街中で気になる存在、それがこの「送水口」です。地上のフロアが7階以上あるビルなど、一定の条件を満たした建築物には設置が義務付けられているもので、火事が発生したフロアにただちに水を送るために使われるものです。ポンプ車…

    はてなブログ | 無料ブログを作成しよう
    lapis25
    lapis25 2009/10/15
  • おさかなラボ - [XS]XSのおさらいとtypemapについて

    前回のXSをとにかく作ってみる編の続編である。どこかに目次のエントリを作るか、Wikiにした方がいいような気がしてきた。今後、自身の学習・復習もかねてXSについて解説していく。対象は取り急ぎperl-5.8.8以上とする。なお、今回は話が思いっきりあさっての方向にそれたので、先にお詫びしておく。 XSとは何か。XSはPerlが用意したAPIに、C/C++でアクセスするためのマクロ言語である。そしてマクロ言語の記述フォーマットの名前である。「PerlAPIを叩くCプログラム」を総じてXSと呼ぶ向きもあるが厳密にはこれは正しくないことは前に述べた。 XSファイルは主に3つのパートに分けられる。Perlから関数として呼び出された時の引数を受け取る処理、そして核となるルーチン、そして演算結果をPerlに返す部分である。しかし引数と戻り値に関しては最初はあまり神経質になる必要はない。これらは大抵

    lapis25
    lapis25 2009/10/06
  • おさかなラボ - PerlでXSを使ってみよう

    と思う人は多いと思う。気になっている人は多いだろう。しかし、XSに関する詳細なドキュメントは、ググってみると驚愕するくらい少ない。そして読みにくい。理由は後述する。 私もXSに関するドキュメントを書きたいのだが、カバーする範囲が広大すぎてどこから手を付けたらいいのか全く分からない。が書けそうな勢いだ。エントリを分けて書くのか、既存とは別のチュートリアル文書のようなものを書くのか、悩んでいるところである。その代わり、今回はXSってえる?って人には有用なエントリにしたいと思う。そして簡単なサンプルを書いてみたいと思う。 少々のことなら分かるしググるし大丈夫だぜ!という人は、以下のエントリ、およびリンク先を参照すると良いと思う。 XS by id:naoya まずはXSって何?ってことだが、この時点で何がなんだかさっぱり分からない人が多いと思う。それもそのはず、XSという言葉が包括的

    lapis25
    lapis25 2009/10/05
  • セキュアな XS ローダー - id:kazuhookuのメモ置き場

    perl のプロセス内でサンドボックスを作ろうと思うと、少なくとも以下の2点が必要です。 オプコードの制限 DynaLoader::dl_install_xsub を利用したネイティブコード注入 このうち、オプコードの制限については、ops モジュールで行うことが可能です。一方、DynaLoader::dl_install_xsub 関数については、これを単純に使えなくしてしまうと、XS モジュールをロードできなくなってしまうので、一定の条件下でのみ、これが実行されるような仕組みを作ってやる必要があります。 というわけで私案。クロージャーを使って、以下のような形にするのはどうでしょう? 「strict::import とか書き換えられちゃうとダメじゃね?」ということで没ネタですorz #! /usr/bin/perl use strict; use warnings; use DynaLo

    セキュアな XS ローダー - id:kazuhookuのメモ置き場
    lapis25
    lapis25 2009/03/17
  • DynaLoader に関する基礎知識 - tokuhirom's blog

    DynaLoader に関する基礎知識 Perl で XS をよむには DynaLoader か XSLoader をつかうのだが、XSLoader は DynaLoader を簡単によぶためのラッパーにすぎない。いうなれば ExtUtils::MakeMaker にたいする Module::Install のようなものだ。 DLL に対応した perl はDynaLoader をくみこんでいるので、DynaLoader.pm はなくても XS でかかれた部分は普通につかえる。DynaLoader::boot_DynaLoader() すると、DynaLoader::* の関数のうち XS でかかれたものはよべるようにセットアップされる。 DynaLoader の利用を禁止したい場合には、質的な解決策としては、必要な XS module を static link して、dynamic

    lapis25
    lapis25 2009/03/13
  • Devel::Peek::Dumpで見るSVのボディの型 - Islands in the byte stream (legacy)

    今までXSでSvTYPE(sv)をするとそのsvの型が返ってくると考えていたのだが,最近それは誤りであると気づいた。SvTYPE(sv)が返すのはそのsvのボディの型であり,それがsvの内容を表現していることもあれば,無関係のこともある。 具体的には,そのsvが配列(AV),ハッシュ(HV),サブルーチン(CV),型グロブ(GV)などであれば,SvTYPE(sv)が返すのは実際にそのsvの型と一致するが,それ以外のスカラー値の場合はsvのフラグを見なければ型を特定できない。 それを示すのが次のスクリプトである: #!perl use strict; use Devel::Peek; my $x; # $xはundef Dump $x; # -> SvTYPEはNULL $x = \10; # 一旦リファレンスを代入 $x = undef; # $xはundef Dump $x; # ->

    Devel::Peek::Dumpで見るSVのボディの型 - Islands in the byte stream (legacy)
    lapis25
    lapis25 2009/03/06
  • 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

  • ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化

    (追記:2009/03/25) id:tokuhirom さんからコメントを頂きました。このベンチマークは問題があるそうです。 http://d.hatena.ne.jp/higepon/20050615/1118829090#c (追記:終わり) PerlにはC言語で書かれた関数を呼び出すためにXSという仕組みが存在します。 一部CPANモジュールでも使われているためご存知の方も多いと思いますが、今回はこのXSの簡単な利用方法を紹介したいと思います。 なおXSは、はてなでも使用しています。 さてXSモジュールを使うとうれしい事は C言語で書くことにより、処理が高速になる可能性がある 既存のC言語ライブラリ資産をPerlから利用することができる Perlがあまり得意でない、メモリ内などに存在するビット単位での細かなデータ構造を、あれこれできる などが挙げられると思います。 今回は、高速化に

    ひげぽん OSとか作っちゃうかMona- - [Perl] XS利用でPerl高速化
  • 404 Blog Not Found:perl - BSD::getloadavg

    2006年10月26日20:30 カテゴリLightweight Languages perl - BSD::getloadavg レポートを受け追記; BSD::Sysctlのことも追記 この部分がなんとも惜しいような気がしたので書きました。 Milano::Monolog: mod_rewriteでサーバーの負荷が高いときだけリダイレクトする my ($ldavg1, $ldavg2, $ldavg3) = `uptime` =~ /load average:\s+([.0-9]+),\s+([.0-9]+),\s+([.0-9]+)/; BSD::getloadavg CPAN http://www.dan.co.jp/~dankogai/cpan/BSD-getloadavg-0.01.tar.gz これで当該部分は、 #!/usr/bin/perl use strict; use

    404 Blog Not Found:perl - BSD::getloadavg
  • naoyaグループ - naoyaの日記 - XS

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

    naoyaグループ - naoyaの日記 - XS
  • http://chasen.org/~taku/blog/archives/2005/09/_swig_perlrubyp.html

  • 1