なんだか今年は身内の訃報がかさなったりして、フル参戦できなかったのですが、少しでも行くとモチベーションが上がるのが YAPC ですね。 Hacking Mac OS X Cocoa API from Perl Hacking Mac OSX Cocoa API from PerlView more presentations from typester. っ... 続きを読む
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 p... 続きを読む
perlまたはRe: PerlとC言語の型に対応する値への相互変換XSでCの文字列操作関数の使用はなるべく避けるべきです。Cの文字列操作関数は危険で使いにくいものです。その代わりに、Perlが提供する安全で使いやすいSV APIを使ったほうが余計なことを考えずに済みま... 続きを読む
perlXSでメモリリークを避ける基本原則は、それほど難しくない。すなわち、作ったSV(およびSVファミリ)はすぐsv_2mortal()するのである。mortalなSVはスコープ*1から抜けるときに解放されるため、メモリリークは起こらない。つまり、あるスコープ内で新しく作っ... 続きを読む
PerlXSを始めるための手順といくつかの要素の解説です。C言語をある程度知っている人でも,これを読んだだけでXSの基礎をマスターしてXSを書くことができるようにはなっていません。リファレンスでもありません。XSはいろいろと特殊なのでテンプレは無視で行き... 続きを読む
あけましておめでとうございます。今年もよろしくおねがいします。正月ということでふだんなかなかできないことをやろうかなということでXS勉強中です。XSにはあまり詳しくないのでCPANにある実例を色々読んだりしてるとperldoc引きまくりな刑になるわけですが... 続きを読む
前置き こんにちは,gfxです。好きなソースはタルタルソースとsv.cです。JPerl Advent Calendar 2009 Hacker Trackも8日目ですね。そろそろTipsを読むだけでは飽き足らず,モジュールを書きたくなってきたんじゃないでしょうか。そんなわけで,今日はModule::In... 続きを読む
前回のXSをとにかく作ってみる編の続編である。どこかに目次のエントリを作るか、Wikiにした方がいいような気がしてきた。今後、自身の学習・復習もかねてXSについて解説していく。対象は取り急ぎperl-5.8.8以上とする。なお、今回は話が思いっきりあさっての方... 続きを読む
と思う人は多いと思う。気になっている人は多いだろう。しかし、XSに関する詳細なドキュメントは、ググってみると驚愕するくらい少ない。そして読みにくい。理由は後述する。 私もXSに関するドキュメントを書きたいのだが、カバーする範囲が広大すぎてどこから... 続きを読む
This repository is private. All pages are served over SSL and all pushing and pulling is done over SSH. No one may fork, clone, or view it unless they are added as a member. Every repository with this icon () is private. This repository is pu... 続きを読む
Profiling xs with gprof is difficult, but you can use callgrind.callgrind is a part of valrgrind. It is "a call-graph generating cache profiler".You can use like following command. valgrind --tool=callgrind perl -Mblib foo.pl Then, "callgrind... 続きを読む
PerlまもなくYAPC::Asia 2009が開催しますね。私の発表の資料は以下の場所に置き,順次更新する予定です。git://github.com/gfx/YAPC-Asia-2009-gfx.gitよろしくお願いします。 続きを読む
■ PERL_MAGIC_extの使い方 PERL_MAGIC_extの使い方を覚えたので、詳しく紹介する。PERL_MAGIC_extはXS開発者向けに用意されているMAGICの一つで、XS(C言語)側でPerlの変数に情報を格納することが出来る。PERL_MAGIC_extはPerlコードからは全く見えず、ユーザ... 続きを読む
55957 Uploads, 18259 Distributions 70393 Modules, 7574 Uploaders 続きを読む
Wednesday, July 1, 2009 PL_runops I'm going to try to do a series of posts about learning Perl internals. I am still a beginner, I have trouble remembering the many macros, or keeping everything in my head all at once, so hopefully I will be ... 続きを読む
Tuesday, July 28, 2009 SV * In my last internals post I mentioned that most of the data in Perl revolves around the SV struct. The excellent PerlGuts Illustrated describes these structures in great detail, and of course there's the two main d... 続きを読む
perlxstut 元ネタは perlxstut - perldoc.perl.org と perlXStut - XSUB を書くためのチュートリアル です。 大体 perlxstut に沿ってエントリ書いてるはず。 perlxstut (1) - Hackadelic Memo - ミンナニハナイショダヨ perlxstut (2) - Hackadelic Memo - ミ... 続きを読む
PerlMakefile.PLを書くためのビルドユーティリティの一つであるModule::Installは非常に便利だが,XSモジュールのサポートが弱い。そこで,Module::InstallのプラグインとしてModule::Install::XSUtilを書いてみた。http://search.cpan.org/dist/Module-Install... 続きを読む
holly's wiki hollyなwiki トップページページ一覧タグ一覧掲示板β版編集 履歴 perlxsねた 最終更新:kurt0027 2009年06月21日(日) 22:47:12 もう忘れてしまってるのでよくわからん 参考になりそうなところ 私的 XS メモ - IT戦記 v8 (Google JavaScript Engine... 続きを読む
XS なモジュールをテストする際には、vincent pit の Test::Valgrind をつかうといいだろう。 cpan Test::Valgrind などとしてインストールし、 prove --exec 'perl -Iblib/lib -Iblib/arch -MTest::Valgrind' t/*.t などと打てば、t/*.t をはしらせて、メモリ... 続きを読む
http://github.com/tokuhirom/p5-module-install-microtemplate/XS を書いてると、DRY じゃないなーって感じのコードを書かされることが多々あります。たとえばこんなの。単純な setter なんですが、これを綺麗に書くにはどうしたらいいのか。 void set_user(co... 続きを読む
PerlXS code template法を使ったアクセサジェネレータをClass::MOPに実装してみた。#47031 Makes simple readers to install easily現在(0.86)はアクセサを定義するためにprehashed_keysテーブルをはじめとしてソースコードのさまざまな部分を修正しなければな... 続きを読む
DynaLoader.pmとXSLoader.pmまわりのお話.動作の仕方や,両者の違いなどを見ていく.参考にしたのはperl5.10.0のソースツリー. 1. XSUBとnewXS DynaLoaderの本質はXSUBなので,まずはそのあたりから見ていく.XSUBを使ったモジュール(=Pure-Perlじゃないモジ... 続きを読む
Data::MessagePack のシリアライズが遅いなあ、とおもっていたところ、id:viver さんに「sv_catpvn が遅いのでは」と言われたので、valgrind で調べたところ、なるほど realloc が大量に発生しており、これが遅い原因のようだ、と思った。perl5 のコードを斜め... 続きを読む
Perl のソースコードツリーの解説をする。Perl5 の世界はマクロと略語にいろどられているので、どこになにがあるのか、素人には歩きづらいので、道標を提供しようというわけである。Perl にはいっている *.c は以下のとおり。 av.c gv.c miniperlmain.c perl.c ... 続きを読む
Perl, CPANVincent Pit氏のLexical::Typesがなんだかすごい。SYNOPSISより: { package Str; sub TYPEDSCALAR { Some::String::Implementation->new } } use Lexical::Types; my Str $x; # $x is now a Some::String::Implementation object もともとPerlには"m... 続きを読む
小飼弾(こがい だん、1969年8月17日 - )は日本のオープンソース開発者。ディーエイエヌ有限会社代表取締役。歌代和正開発のjcode.plの発想を基にJcode.pmを開発したことで知られ、その後、プロジェクトEncode Module(Encode.pm)のメンテナンスとPerlバージ... 続きを読む
acmポータルでPerlネタの論文を探していたら,Perl5 Internalsに触れている論文を発見しましたので紹介いたします.Perlの内部構造について知りたい方は目を通しておくとよいかもしれません.処理系の内部仕様と実装(5.8.8)の話が文章としてまとまっており,分... 続きを読む
PerlPerlのC APIにはMagicという考え方があって,任意のSVにフックとプライベートデータを付けることができる。このAPIはXSからでも利用できるのだが,難しそうで敬遠していた。しかし,試してみると意外と簡単に使えることが分かったのでメモしておくWeakRef::... 続きを読む
XS code template - 動的にXSUBを生成する XSコードはふつうPerlコードよりも多機能で高速ですが,書くのが難しいため敷居が高いことも事実です。また,いちいちコンパイルしなければならないのも煩わしい点です。 ところで,Perlにはクロージャという仕組みが... 続きを読む
/* There's a lot of cases of doubled parens in here like this: while ( (he = ...) ) { This shuts up warnings from gcc -Wall */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #define NEED_newRV_noinc #define NEED_sv_2pv_flags #define ... 続きを読む
PerlRe: XSの勉強を始めるためのエントリーポイントは?あまり参考にならないかもしれませんが,私がXSを勉強するにあたっては,CPANのモジュールのソースコードを読むより実際に書いてみるのが一番だと思います。ただし,何か特定の目的があって,そのために関... 続きを読む
-*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! This file is built by autodoc.pl extracting documentation from the C source files. =head1 NAME perlapi - autogenerated documentation for the perl public API =head1 DESCRIPTION ... 続きを読む
Open Publications License 1.0Copyright (c) 2001 by NetThink.This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http:... 続きを読む
The requested blog was not found on this server -- unless you requested that of Dan Kogai (小飼 弾). IDN、国際化ドメイン名は、 URI Encode ではなく Punycode で encode しなければならない。よって「脆弱性診断.jp」は%E8%84%86%E5%BC%B1%E6%80%A7%E8%... 続きを読む
threads.xsで使われているインタプリタスレッドの構造についてまとめたものをめもめ.最初にPerlのithreadsの概要について説明してから,管理構造,提供されるメソッド,マジックについて説明していく. 1. Perlのスレッドの概要 Perlのスレッドはインタプリタ... 続きを読む
perl前回のエントリXS入門その4 typemap - CとPerlの型変換http://d.hatena.ne.jp/ksmemo/20081221/p2から間が開きましたが、前回予告したとおりPerl側からハッシュリファレンスを渡してXS側で処理をするというコードを書きます。今回まずはコードから先に書き... 続きを読む
tieとmagicについて自分なりに消化するためのめもめも.両者の根底にある本質は,ある変数へのアクセス動作に対し,hookの仕組みを与えるということ.この観点からtieとmagicについて見てみる.まずtie.hook機構をオブジェクトで包み込んだものをPerl変数と結... 続きを読む
package # this is an example for modify_subroutine()/subroutne_modifier(). Method::Modifiers; use strict; use warnings; our $VERSION = '1.00'; use Exporter qw(import); our @EXPORT = qw(before around after); our @EXPORT_OK = (@EXPORT, qw(add_m... 続きを読む
Perl正月番組をみながらperldoc perlxstutを読んだ.メモをとったのでせっかくだからはっつけておくよ.ちょっとメモがはしょり気味なのと,うちの理解があやしいところがあってこころもとないですが,perlxstut読むときの参考にでもなればばば. Example1 $ h2... 続きを読む
PerlXSを使ってみたい.ついでにC++も勉強したい.とりあえず今日はShibuya.pm #9 のXSトークを何個か見てみた.PerlからXSの世界をながめてみるまずは,PerlからXSの世界をながめてみる.整数値は一度文字列化すると文字列表現がキャッシュされる.Devel::Peek... 続きを読む
携帯電話でもニコニコできる? 「ニコニコ動画モバイル」大好評サービス中! 人気の動画を簡単に探せる各種ランキングや、時間潰しに最適な動画をお知らせする「ニコニコ通信」など、充実の機能が満載!! 左のQRコードからアクセスしてね! ニコニコ動画モバイルの... 続きを読む
まだXSのことをよくわかってないのですが、XSモジュール用のModule::Setupのflavorを作ってみました。 このflavorを使うには、記事下にあるコードをXSFlavor.pmって名前でファイルに保存して、 % module-setup --init --flavor-class=+XSFlavor xs でflavorを展... 続きを読む
Gluing C++ And Perl Together August 27, 2001 Perl XS (the Perl native glue) and C++ hookup is not clearly covered in any one reference that I can find. So here's some coverage. 1. Preparing the Installation XS totally supports C++. XS is not ... 続きを読む
XSをまったく使ったことが無かったので試してみることにした。XSUBをPerlに組込むわけではないので、xsubppで出力した結果(XSUB)を見ながらにやにやするにとどまる。 まずは、MODULE、PACKAGE、PROTOTYPE、INPUT、PREINIT、CODEから。今回は引数スタックをPPし... 続きを読む
perl[注意書き]書いてる最中にデータが飛んだので書き直しているのですが、多分後から思い出して追記すると思います。[/注意書き]ここまでXSのコードの中で、変数の型はCの型で書いてきました。が、考えてみればおかしな話で、Perlから受け渡されるデータの型は... 続きを読む
perl複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話)state_stack と... 続きを読む
perlこれはXSというよりはCのコードをC++で使う方法ですが、自分はC/C++をあまり触ったことがないので勉強も兼ねて書いておきます。結論から先に書くとMakefile.PLにCC => 'g++',LD => 'g++',を追記すればg++でコンパイルされます(つまりC++が使えます)。最初に... 続きを読む
PerlPerlのソースコードはPerl言語以上に変化が大きく,それに伴ってXSの書き方もだいぶ変わってきている。たとえば,スカラー(SV)から文字列(PV: pointer valueつまりchar*)を得るAPIの変遷は次のようになっている。 /* SV*からPVを得る古い書き方 */ STRLEN l... 続きを読む
perlあまり面白くないですがHello Worldもどきを書いてみました。 #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" MODULE = HelloXS PACKAGE = HelloXS void hello(name) char* name CODE: printf("Hello %s!\n", name); これを... 続きを読む
perl最初に書いたサンプルは単純に引数に固定の数値を加えるというものだったので、今度は関数を使ってみようと思います。つまり、今回作成するXSのコードは引数が1つ引数が数値関数を使うという条件のものにします。ループや関数の再起呼び出しをするほうがPur... 続きを読む
Perl5 C Functions You Don't Know About Perl5は実にさまざまな環境で動く。すると当然だが、C/XSでコードを書くときはその辺りも考慮にいれつつコードを書くのが良い。 File::MMagic::XSはApacheもmod_mime_magicをXSから直接使えるようにポートした物だ。こ... 続きを読む
perl 参考にしたサイト集perlxs - perldoc.perl.orgperlxstut - perldoc.perl.orgperlguts - perldoc.perl.orgperlapi - perldoc.perl.orgXS を書くときのメモ。 - TokuLog 改めB日記 Perl XS メモ - typemap と MAGIC をからめて - daily dayflowerwakaponさん... 続きを読む
perl, memoid:tokuhirom さんが XS を書くときのメモ。 - TokuLog 改めB日記 で下地をつくってくださったので(perl-users.jp むけまとめも期待してます),ちょっとアドバンスドな話題を。 例題 EB LibraryEB Library の Perl binding を開発するとしましょう... 続きを読む
不意に typemap をつかって C++ のライブラリのバインディングを XS で書きたい気分になったので、書いてみた。XS は PL_check をいじったりするときぐらいしかさわらないので、新鮮な気分になりましたですね。以下にメモをはっつけときます。一通り終わったら... 続きを読む
PerlPerlのようにクロージャをサポートする言語では,eval()せずに実行時にサブルーチンを定義できるので大変便利である。しかし,Cではポータブルにクロージャを作る方法はないので,サブルーチンの動的定義とXSによる高速な実装は相容れないように見える。し... 続きを読む
PerlPerl/XSが得意なことはほとんどオレオレ用語といっていいくらい端折ったリストなので追々補足しておく。まずひとつ,「注意を払う」というのは内部で呼ばれるmalloc()を極力減らすという意味と書いたが,よく考えてみればこれはmalloc()*1が遅いというのが... 続きを読む
Perl最近ひたすらXSを書いていて思ったのが,XSはやっぱり速いということ。ただ,いつでも無条件に速いというわけでもなく,何も考えずに書くとPurePerlのコードより遅くなることも珍しくない。実際,最近書いたShikaやMOPのXS版もいきなり高速だったわけではな... 続きを読む
名前 NAME h2xs - convert .h C header files to Perl extensions 概要 SYNOPSIS h2xs [OPTIONS ...] [headerfile ... [extra_libraries]] h2xs -h|-?|--help 説明 DESCRIPTION h2xs builds a Perl extension from C header files. The extension will include ... 続きを読む
■ XS 00:55 BSD::getloadavgと名付けはしましたが、Linuxでも動くはずです。とりあえずPerl 5.6.2/5.8.8、Mac OS X 10.4.8/FreeBSD 6.1-Stableの組み合わせでは問題ないことを確認しています。他のarchの動作確認キヴォンヌ。 404 Blog Not Found:perl - BSD::... 続きを読む
id:TAKESAKOさんの好意で出させてもらったので、適当にロギングします。 はじめてのXS / id:hirose31さんXSってなに? PerlとCをつなぐための言語&インタフェースFoo.xs → xsubpp → Foo.c → Cコンパイラ → Foo.soPerlからは、XSLoaderやDynaLoaderでFoo.so... 続きを読む
@ [shibuya.pm] Shibuya Perl Mongersテクニカルトーク#9 (XS Nite)に行ってきました 久々にテクニカルトークに行ってきました。レポートというかまとまっていないログと感想ですが、記録のために残しておきます。 # はじめてのXS (hirose31さん) 10分遅れで参... 続きを読む
Perl XS - typemap vs RETVAL typemapで自動変換を指定できる型については、RETVALにSV *を突っ込む必要がない。 IV hoge() CODE: RETVAL = 1; OUTPUT: RETVAL カテゴリ 開発 2006年7月13日 15:39 D | ブログ記事のURL | コメント(0) | トラックバック(0) | 続きを読む
前回は、XSモジュールを使うと処理が高速になる可能性があるという紹介をしました。 ただしXSモジュールの導入にはデメリットもあります。C言語で実装しているという関係上、 モジュール変更のたびにリコンパイルが必要であるメモリリークの危険性がある Perlの... 続きを読む
PerlにはC言語で書かれた関数を呼び出すためにXSという仕組みが存在します。一部CPANモジュールでも使われているためご存知の方も多いと思いますが、今回はこのXSの簡単な利用方法を紹介したいと思います。なおXSは、はてなでも使用しています。 さてXSモジュー... 続きを読む
世田谷の某所から原宿まで自転車通勤しているのですが、そろそろ寒くなってきたので電車に切り替えようかと悩み中のmikioです。今回はTokyo Cabinetのスクリプト言語バインディングについて述べます。 スクリプト言語バインディングとは TCはC言語で実装された... 続きを読む
perl, memo前回の記事はおかげさまで id:yappo さんに HE-N-TA-I 認定されたので安心してたら,マッチョな人に牛刀フラグを立てられ(もちろん冗談です*1),Shibuya.pm 入会への道もなかなか険しいなぁと思い知りました。そんな空気は読まずに理論編?を Perl ... 続きを読む
perl(あとでかく)XS くらいいじれないと Shibuya.pm に加入できないらしいので,とりあえず書きましたー。今回は実践編なので,あまりわかりやすい内容&たいした内容ではないです。わっふるさせてごめんなさい。 ゴール #!/usr/bin/perl eval 'print "Hello ... 続きを読む
Perl の内部処理系をお勉強 ちょっと前に perlfilter - Source Filters - についてお勉強したときから調べようと思っていたことなのですが、Perl の内部処理の流れ(Perl 5 Internals)についてお勉強中です。思いっきり見逃してしまいましたが、Perl 5 Interna... 続きを読む
Shibuya.pm tech talk #9 (XS nite)で発表してきました Perl本体にパッチをあてる事無く動的に動いてるPerlのコアを書き換えちゃう事が出来るPL_checkやo->op_ppaddrなどについて発表してきました。 資料はそれなりなポインターとして使える風味なので、よろし... 続きを読む
http://svn.coderepos.org/share/docs/tokuhirom/20080625-xsnite-vmgolf/main.txthttp://svn.coderepos.org/share/docs/tokuhirom/20080625-xsnite-autobox/main.txt発表資料うp しました。ニコニコ動画にも動画があがってるのでみてあげてください。coji++htt... 続きを読む
Post to Twitter Post: Shibuya.pm #9 My First XS From: hirose31, 3 months ago Shibuya.pm #9 My First XSView SlideShare presentation or Upload your own. (tags: shibuya.pm xs) Shibuya Perl Mongers technical talk #9 a.k.a. XS Nite http://shibuya... 続きを読む
perl5 Manual から, 自分でXSを読む為に必要なものを抜き出してみる XS キーワードモジュール全体の構造に関するキーワードマクロ概要参照メモMODULECとXSを分け, 続く行をXSのコードとするThe Perl5 Manual - MODULE キーワードPACKAGE複数のパッケージに分け... 続きを読む
PerlGuts Illustrated PerlGuts Illustrated Version 0.06 This document is meant to supplement the perlguts(1) manual page that comes with Perl. It contains commented illustrations of all (eventually?) major internal Perl data structures. Having... 続きを読む