xs

Perl 5.10以前では, リファレンス型はSVt_IVでなく SVt_RV

https://github.com/tokuhirom/Linux-Socket-Accept4/pull/6 ハマったのでメモ. Perl 5.11以降では, SVt_RV(リファレンス型)は SVt_IV(整数型)のエイリアス(同値) なのですが, それより前では異なる値です. リファレンス型の判定に SVt_IVしか 使っていなか…

MULTICALLを使う場合はコンパイル時に -DPERL_EXTを指定する

http://d.hatena.ne.jp/syohex/20111005/1317829402 以前自分で調べておきながら再度ハマってしまったので、 専用のエントリを書いておきます。 対象 MULTICALLを使ったモジュールを Perl 5.10以前にも対応させたい方。 Perl 5.12以降のみをサポートというの…

xs-modeの設定

以前 List::UtilsBy::XSというモジュールを書いたとき、 c-modeだとなんか変だしということで xsのソースは頑張って text-modeで書いていたけど、専用のがあるだろと思って調べて みると xs-modeというものがあったので、その導入と設定に ついて。 ソース E…

Text::AAlibを書いています。

XSを書く練習の続き。 前回はごりごりとXSで書くというものだったので、 今回はライブラリのバインディングにチャレンジ。 扱うライブラリは An ascii-art library というアスキーアートを作るためのライブラリ。 開発リポジトリ syohex/p5-Text-AAlib · Git…

List::UtilsBy::XSが書けました。

List::UtilsBy::XSを書いてます。 - Life is very short の作業がとりあえずひと通り終わりました。 List::UtilsByのテストユーティリティがなぜか無限ループして しまうことや、Lightweight Callback APIの制限があったり しますが、List::UtilsByから持っ…

Light weight callback APIを使う場合とそうでない場合の差

List::UtilsBy::XSを書いてます。 - Life is very short のようなことを今やっています。詳しく Perl APIを理解できている わけではないので、List::Util、List::MoreUtilsを参考にしています。 それらのモジュールでは Light weight callback API(MULTICALL…

RETVAL経由の AV*, HV*の return

'perldoc perlxs'に 'Returning SVs, AVs and HVs through RETVAL'という 項目があって、ここに書いている通りにやると sub ret_av { ... return @array; } sub ret_hv { ... return %array; }みたいになるのかなと思って試してみたら違ったということのメモ…

List::UtilsBy::XSを書いてます。

XSの勉強ということで, List::Utilや List::MoreUtilsに 似ている List::UtilsByの XS版を書いています。 リポジトリ syohex/p5-List-Utils-By · GitHub ベンチマーク まだすべてが実装できているわけではないんですが、 sort_by, nsort_by, max_byについて…

N-QueenをXSを使って実装してみた

とりあえず実装してみたまずは Makefile.PLの作成 use strict; use ExtUtils::MakeMaker; WriteMakefile ( NAME => 'Solver::NQueen::XS', VERSION_FROM => 'lib/Solver/NQueen/XS.pm', );次にモジュールファイルの作成. モダンPerl入門のまま. package Solv…