タグ

ブックマーク / shinpei.github.io (2)

  • Go1.7からSSAが導入された - flyhigh

    初めに Go 1.7がリリースされる。目玉の一つは、SSA-IRが導入されたことだろう。Go1.7でSSAが入るんだけど、SSAって何?と居酒屋で聞かれたことが稿の発端だった。私の知識だけでは包括的な説明にならなかったので、いろいろ調べつつそれをまとめた。 以下、一般的な話ではなく、なるべくGoに絞って話を進めている(コンパイラのコードははcmd/compile/internal/gcあたりにある)。より一般的な話は、参考文献等を示したのでそちらを参考にしてほしい。いろいろ調べて、Goに追加されたSSAについて知るべきことは、SSAが何か?よりも、SSA導入したGoがどうなったか、であると思った。 SSAとは何か SSA とは Static Single Assignmentの略だ。一つの変数への代入は一度しか行われてない事が確約できる形式のコードだ。この形式のコードは、最適化が行いやす

  • build -tagsを使ってRelease/Debugを切り替える - flyhigh

    Goでウェブアプリのクライアントを書いている。 ローカルでテストする場合は、サーバもローカルにたてるので、アクセスする先はlocalhostになる。 リリースするときは正しいウェブアプリのURLを指定しなければならない。 この際、切り替えはナイーブにコメントアウトで行ってきた。 1 2 3 4 const ( // APIServer = "http://www.mywebapp.com" APIServer = "http://localhost:8080" ) 当然、デバッグ用を有効にしたままリリースしてしまったり、その逆だったりと、混乱があった。 このような、デバッグ・リリースで機能を切り替えたい場合はBuild constrainsを使えば良いらしい。 Build Constrainsとは? 従来の機能が充実しているGoに抜かりはない。Build constrainsとは必要に応じ

  • 1