タグ

perlとxsに関するbayashi_netのブックマーク (14)

  • XSことはじめ - Qiita

    package Acme::MyModuele; use 5.008001; use strict; use warnings; our $VERSION = "0.01"; use XSLoader; XSLoader::load(__PACKAGE__, $VERSION); 1; #ifdef __cplusplus extern "C" { #endif #define PERL_NO_GET_CONTEXT /* we want efficiency */ #include <EXTERN.h> #include <perl.h> #include <XSUB.h> #ifdef __cplusplus } /* extern "C" */ #endif #define NEED_newSVpvn_flags #include "ppport.h" MODULE = Acme::

    XSことはじめ - Qiita
  • Howto: XS Coverage Reports on coveralls.io | Nick Wellnhofer [blogs.perl.org]

    The excellent Travis Perl helpers make it easy submit automated coverage reports to Coveralls whenever you commit to GitHub. All that's needed is to set the COVERAGE environment variable. Unfortunately, this doesn't include the XS portions of a module. But since Devel::Cover already supports XS modules out of the box, only a slight change is needed to make it work. Simply make the Travis Perl help

  • Digest::BLAKE2作成で学ぶモダンPerl XSモジュール作成と、挫折

    Perlを3行書くと死ぬ奇病にかかってはや数年、毎日青息吐息で出社している僕です。一番好きな言語はC言語です。裏切らないから。 というわけで、裏切らないC言語でPerlのモジュールがかければ死ぬ可能性が低まるのではないか、という仮説のもとに、XS module作成を習作してみよう。 BLAKE2というとよさげなハッシュアルゴリズムがあるので、それをPerl module化してみた。 https://github.com/gunyarakun/p5-Digest-BLAKE2 http://search.cpan.org/~gunya/Digest-BLAKE2/ ベンチマーク まずはベンチマークから。 BLAKE2には4つのアルゴリズムがあるが、マルチプロセス版はセグフォしたので、BLAKE2bとBLAKE2sのみ。 BLAKE2bは64bit CPUで高速に動き512bit出力。BLAK

    Digest::BLAKE2作成で学ぶモダンPerl XSモジュール作成と、挫折
  • perl XS -

    [2008-12-25 18:34] 参考にするソースとして Ganglia::XS(Makefile.PL がよいのと、シンプル) Text::Mecab(typemap をつかった例として) ■FAQ C++なライブラリをバインドするには CC =>'g++', をmakemaker_args に渡せばよい。 ■参考になるサイト typemap について http://mt.endeworks.jp/d-6/2006/07/perl-xs-typemap-vs-retval.html C++libraryをXS with typemap http://perl.g.hatena.ne.jp/bosh/20060927/p1 ■pod perldoc perlguts Perl XS の API perldoc perlxs XS についての概論 perldoc perlxstut XS

  • Re: XSの勉強を始めるためのエントリーポイントは? - Islands in the byte stream (legacy)

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

    Re: XSの勉強を始めるためのエントリーポイントは? - Islands in the byte stream (legacy)
  • XSにまつわる話

    Hokkaido.pm #8

    XSにまつわる話
  • おさかなラボ - [XS]Perl変数とPerl構造体の対応について

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

  • 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 モジュールで調べる - 日向夏特殊応援部隊
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

  • DO NOT write XS

    DO NOT write XS Tatsuhiko Miyagawa Tsukuba.XS #1

    DO NOT write XS
  • おさかなラボ - PerlでXSを使ってみよう

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

  • Perl 5 internals の世界にようこそ - daisuke maki

    Shibuya Perl Mongersテクニカルトーク#9マイリスト: mylist/7281253発表資料など: http://mt.endeworks.jp/d-6/2008/06/shibuyapm-9.html

    Perl 5 internals の世界にようこそ - daisuke maki
  • (byte|文字列)計算系のバッチ処理と Inline::C の相性の良さ

    どんなシステムにおいてもオンライン系の処理ばかりではなくバッチ処理系のプログラムというものが存在します。僕の場合、ユーザに見えない部分のプログラムが全体の70%を占めているかもしれません。 バッチ処理は大量のデータを処理する場合が多いのが特徴のうちのひとつ。しかもその処理が想定時間内に終わらないと、どこぞのシステムのようにシステム全体に影響が出てしまいシステムダウンなんて最悪の状態になることもあります。あれに起因してバッチの突き抜けなんて効いたこともない言葉が生み出されたくらいだし。w さて話を戻して、システムを運用しているとデータ量は当然右肩上がりで増えていきます。よってバッチ処理も当時の想定よりも時間がかかるようになってくるわけです。 僕が作ってるバッチ処理の多くは文字列処理や計算処理が多いです。オンライン系の言語と同じく perl で記述しているものが非常に多いわけですが、Devel

  • XSとPuerPerlの二つの実装を持つモジュールの書き方 - Islands in the byte stream (legacy)

    XSとPurePerl(PP)両方の実装を持つモジュールは少なくない。たとえば: Data::Dumper List::Util/Scalar::Util (List-Scalar-Utils) List::MoreUtils Class::MOP Params::Util (>=0.35) Params::Validate Data::Util DBI JSON/JSON::XS Text::CSV/Text::CSV::XS このように一般的に使われることなのだが、その書き方は多様で定説がない。 Data::Dumperは関数を別の名前で用意し、実装を切り替えるインターフェイスを持つ。 List-Scalar-UtilsはXSがデフォルトで、さらにXSでのみ提供している関数があり、そのような関数はインストールの状態によっては利用できない。なお、そのためにTask::Weakenという特

    XSとPuerPerlの二つの実装を持つモジュールの書き方 - Islands in the byte stream (legacy)
  • 1