「スレッド」の項を読んだ。スタックを拡張する部分がちょっと不思議に思っていたのだけど、疑問は氷解。partyいっちーさん主催(?)のコンパイル・パーティ。1.3.3と1.2.3がリリースされたとこだし、これは参加する鹿。Ruby/DLとGimp-Rubyrb_dlptr_newという関数があるようなので、Gimp-RubyでGimp::Tile#dataをDL::PtrDataを返すように実装。rb_dlptr_newにはメモリの解放用の関数を指定できるんだけど、そのコールバック関数にはラップされたメモリへのポインタしかわたされないので、こいつを使ってタイルのリファレンスカウンタを減らしてやる事は出来ない。一瞬悩んだのだが、PtrDataにTileへの参照を持たせてしまうことにした。すれば、PtrDataよりも先にTileが解放される事はなくて、リファレンスカウンタの増減はGimp::Tileの側だけで済ますことが出来る。国民を馬鹿にしてるとしか思えない。SF-ADJUSTMENTSF-ADJUSTMENTがGIMP_PDB_STRINGとして扱われている理由だけど、なんとなくわかった気がする。いっちーさんのツッコミにあるように以前はSF-VALUEで扱っていて、SF-VALUEはGIMP_PDB_STRINGとして扱われていた。それでSF-ADJUSTMENTを導入した際に、それまでとの互換性を保つために当面はSF-ADJUSTMENTもGIMP_PDB_STRINGとして扱うことにしたんじゃないのかな。Gimp-RubyのWin32用バイナリようやく新しい開発環境を手に入れたので、Gimp-RubyのWin32用バイナリを作ってみました。α版だと思ってください。gimpmingw版Rubyのインストールhttp://www.ruby-lang.org/~eban/ruby/binaries/mingw/から新しめのrubyのバイナリを持ってきて適当なディレクトリに展開します。Cygwinを使っているなら、Cygwinの/に展開すると良いと思います。設定まず拡張子.rbをusr\local\bin\rubyw.exeに関連付けします。次に、gimpが実行ファイルと認識するように環境変数PATHEXTを設定します。とって来て同じディレクトリに展開します。プラグイン用のディレクトリへコピーしてください。2月14日(木))確かに参照渡しを利用した値の書き換えが出来ない言語では悩ましいよなぁ。戻り値を使わないなら、後はJavaでやっているようにHolderクラスみたいなのを使うしかなさそうな気がする。Rinnでの結論は戻り値を使うことだったはず。0.6.6幾つかバグを見つけたので0.6.6をリリース。バグフィックス以外ではDRbIdConvの差し替えが最も大きな変更のはず。それから、mingw32用のバイナリも用意してあります。ffcallnews:m38zckodg6.fsf@maedapc.cc.tsukuba.ac.jpを見て、ffcallの事を知った。(ffcall-1.8.tar.gz)Cでclosureを実現できたり、実行時に返り値の型を決めたり等色々出来るので、rubyのような言語の拡張ライブラリを実装するには何かと便利そうだ。Ruby/DLでのコールバック関数の数の制限なんかを無くす事が出来るはず。単なるUnicoderだと思ってたけど、他の事もやってたのね。(笑)そういえば、Delphiにも似たようなのがあったなぁ。MakeObjectInstance()とFreeObjectInstance()だっけ。void*);」であるべきだと思う。Gimp-Rubyのついでに作っているモジュールがあるので、そいつで試しにtrampolineを使おうとした。trampoline.aをそいつにリンクしようとすると以下のように言われてしまって、リンク結果がスタティック・ライブラリになってしまう。麻雀ははじめてだったけど、わりかし面白い。役のバリエーションとルールがゴテゴテし過ぎてる気がするなぁ。結局この手のゲームの本質は「確率を信じきれるか」と他のプレイヤーとの駆け引きだけなわけで、複雑なルールはかえって興醒めだと思うのだ。それから、あんたら濃すぎじゃ。