#0.9.2出した
#Gauche 0.9.2 がリリースされた!RT : shiro: 0.9.2出した http://bit.ly/mZWOW7 #おつかれさまでした〜。 RT @yuumi3: Gauche 0.9.2 がリリースされた!RT : shiro: 0.9.2出した http://t.co/5Y7dENO #いつも通り、リポジトリから最新をインストールする、リリースしがいのないユーザですごめんなさい。
#いやー、プレリリースをテストしていただいて助かってます。今回も0.9.2_pre2からは実質変更無しでいけました。
#$ gosh -V
Gauche scheme shell, version 0.9.2 [utf-8,pthreads], i386-apple-darwin11.0.0
#64ビットのはずだけどこれでいいのかにゃ。
#たしかconfig.guessとかの出力はi386になっちゃうのでfileコマンドでひとつ。。
#/usr/local/bin/gosh: Mach-O 64-bit executable x86_64
#あれれ、でもそこの判定間違えてるとgauche/arith_*.hのインラインアセンブラで変なの読んじゃわないかな
#prism:Gauche-0.9.2 oku$ ./config.guess
i386-apple-darwin11.0.0
#src/gauche/config.hで、(1)SCM_TARGET_I386は定義されてる? (2)SIZEOF_LONGは8になってる?
#両方yesだとlongの乗算を32bitレジスタでやっちゃうからまずい気が…
#その辺は上手く行くはず。。moshではconfig.guessはパッケージ作るときに差し替えてるけど。
#prism:mosh-0.2.7 oku$ ./config.guess
x86_64-apple-darwin11.0.0
#上手く行くのはなんで?
#Appleのgccが空気を読んで64bitのフロントエンドを呼ぶようになったはず。。
#あ、64bitカーネルでないとダメかも
#おお。 RT @yuumi3: Gauche 0.9.2 がリリースされた!RT : shiro: 0.9.2出した http://bit.ly/mZWOW7 #アセンブラでmullと32bit suffix明示してるんだけど、それでも空気読んでくれるのかなあ
#結果が32bit越える場合は一度オーバフローと判断して、bignum変換のルーチンがfixnumレンジに入ってるからfixnumにしてくれる。でも被乗数が32bit越えてたらどうなるだろ。
#gosh> (* 4294967297 16777215)
72057589759737855
#これ、こうなります?
#prism:llvmcmake oku$ gosh
gosh> (* 4294967297 16777215)
72057589759737855
#ふつう。
#(これはローカルパッチ版の0.9.1なので誰か0.9.2でアレしてください。。
#ひょえー。逆アセンブルしてみないとどうなってるかわからんな。
#gosh> prism:Gauche-0.9.2 oku$ ./src/gosh
gosh: WARNING: Error while loading initialization file: cannot find file "gauche-init.scm" in *load-path* ("/usr/local/share/gauche-0.9/site/lib" "/usr/local/share/gauche-0.9/0.9.2/lib" "/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.9/lib")(error).
WARNING: couldn't load gauche.interactive
gosh> (* 4294967297 16777215)
72057589759737855
#0.9.2もビルドしてみました。
#/* Define to use i386 optimizations */
/* #undef SCM_TARGET_I386 */
/* Define to use x86_64 optimizations */
/* #undef SCM_TARGET_X86_64 */
#アラ。
#/* The size of a `int', as computed by sizeof. */
#define SIZEOF_INT 4
/* The size of a `long', as computed by sizeof. */
#define SIZEOF_LONG 8
#何か間違ってる気もする。。
#SCM_TARGET_I386が定義されないのか。それなら動くのはわかる。最適ではないけれど。
#あーわかった。darwinの場合は、
#i386ってのがcpp predefinedな場合に限りSCM_TARGET_I386を定義するようにしてる。これは以前直したんだな。
#./configure --host=x86_64-apple-darwin11.0.0 --build=x86_64-apple-darwin11.0.0 するとTARGETは定義されるけどSIZEOF_INTは4のままだ
#あれFreeBSDでもSIZEOF_INTは4なのか
#64bitアーキテクチャでもLP64がほとんどじゃないですか。(と、今調べてたらMSVC/Win64ではLLP64なのか。) どちらもintは32bit。 intが64bitになる処理系も無くはないようだけど触る機会はなさそうna
#