アーカイブ

2012年 4月 16日 のアーカイブ
1215 letters | 1805 views | コメントする

 一応体験版で、真魚を64bit版に出来る事は確認できた。しかしそのままでは32bit版で使っていた機能の全てを継承することは出来ない。最初にデバッガすらキャッチできなかったアクセス違反との戦いだったが、それはフォント関連のAPIでコールバックを使っている部分が原因だったことを突き止めた。単に64bit化しただけじゃなく、言語仕様そのものが変わったのか、あるいは最適化が安全でないのか、この部分は今のところ、どういう書き方をしても32bitでやってた事を実現できない。コールバックを使うって事はコールバックじゃなきゃ得られない情報が欲しくてやってるわけで、コールバック関数からの情報伝達をし直さないといけないんだけど、ポインタ使おうが変数使おうがアクセス違反が出ちゃう。だので、この機能自体をいったんあきらめ、つまりはフォントの表示に多少難のある状態にすることで、一応、真魚は普通に起動した。

 32bit決め撃ちのポインタ操作をしているところだけ修正すると、あとはまるで32bit版と区別のつかない、安定した普通の真魚だったが、もちろん、他にも一つ一つの動作をチェックし、32bitになってる所を64bitに直していかないと、データサイズが32bitを越えて大きくなったときに不具合が出る。ギガ単位のテキストファイルでそうなるんだけど、大きいファイルほどデータの破損は痛手になるわけで、データを破損するくらいならまだエラーで落ちる方がマシだから、64bit化した真魚を自分で人柱になって常用するのはそれなりにリスクも高くなる。

 そのままビルドで全然動かないのは、32bit版のDLLを使っている正規表現と、あとこれも別の人が書いたコードをそのまま使っているスクリプトエンジンぐらい。どっちもエラー表示とか全然出ないでうんともすんとも言わない感じ。それ以外ももっと動かないものがあるとは思うが、自前で書いた部分は自前で対応出来ると思う。正規表現は64bitでも動くものを探してこなければならない。スクリプトエンジンはそもそも64bitに移植出来ないかも知れない。

 と言う状態だが、本当に64bit化する必要はあるか?って感じ。プログラミングの好奇心を満たすためだけの64bit化に過ぎない。実用化にはだいぶ時間がかかる。いや、実用化できないかも知れない。32bitのままで更新するんだったらプロ版買わなくてもいいんじゃないの?とか、今回のバージョンは体験版だけ試して、来年買おうかなとか、いろんな選択肢があるわけだ。しかもインストール回数が決まってるから、今の一年以上使ったパソコンにはもったいなくてインストールしたくないし。本当に今買って良いのかと迷ってしまう。うん、買おうとはしてるんだけどな。もう今すぐにでもクレジットカードの番号を入れたいんだけどな。