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挫折中だけど、途中までメモ。
第二関門: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になってるっぽい。
というところで時間切れ。