Go

の秘孔を突く会に参加。
会の詳細は id:ranha さんところとか id:shinichiro_h さんところで。
とりあえず下準備でgccgoをcygwin上でコンパイル、、、しようとして失敗。
当日、linux上でがんばることに。


とーぜん基礎からなんで、syntaxやらlibやらよくわからん。
とりあえず、基本的なところ。


Stdin/Stdout/Stderr -> os 内。
readline的なものは bufio をつかうといいっぽい。
MethodExpression が実装されてないらしい。
あとは、上述のかたがたの日記にいろいろ細かいところが。


いろいろやって、とりあえずreinterpret castとpointerの演算のやり方はわかった。

(S*)(unsafe.Pointer(uintptr(unsafe.Pointer(&t)) + uintptr(100000)))

的な感じでいけそう。(確か。。。あとで修正するかも。。。


帰ってきてgccgoじゃないほうのコンパイルしようとするも、
macroのせいでコンパイルエラーが数箇所。
とりあえずそこは突破するも、次はptraceが必要らしい。
cygwinじゃ確か無かったような気がする。。。
Thread周りをまるっと書き直すのは、ちょっと重そうだなぁ。。。


gccgo挫折中だけど、途中までメモ。

第一関門:GMPとMPFRがないと怒られる。

GMPとMPFRのinstall。どうもcygwin preinstallのやつは古いっぽいので最新版ソースからbuild -> install。

第二関門:ld が -a ware をサポートしてないとか怒られる。

-a wareとか探すも、見つからない。じーっとgrepの結果をよく眺めると、-tsaware なるフラグがたっていた。
これが、 -t -s -a ware と解釈されるらしい。しらんがな。

gcc/config/i386/cygwin.h

からコメントアウト

第三関門:libstdc++v3のconfigureでこける

どうも build した xgcc が吐くコードがどっかでまずいらしい。
手元のgccの結果とdiffとってみたけど、よくわからん。
xgccとか使わなきゃいーんじゃねーの?と思いつつ、うまくconfigいじれず。どっかでccになってるっぽい。
というところで時間切れ。