The Go Blog
Go 1.5がリリースされました
本日、GoプロジェクトはGoの6番目のメジャー安定版リリースであるGo 1.5をリリースすることを誇りに思います。
このリリースには、実装に大きな変更が含まれています。コンパイラツールチェーンはCからGoに翻訳され、GoコードベースからCコードの最後の痕跡がなくなりました。ガベージコレクタは完全に再設計され、ガベージコレクションのポーズ時間が劇的に短縮されました。スケジューラに関連する改善により、デフォルトのGOMAXPROCS値(同時に実行されるゴルーチンの数)を1から論理CPUの数に変更することができました。リンカの変更により、Goプログラムにリンクするための共有ライブラリとしてGoパッケージを配布したり、Cプログラムによってリンクまたはロードされるアーカイブまたは共有ライブラリにGoパッケージをビルドしたりすることができるようになりました(設計ドキュメント)。
このリリースには、開発者ツールへの改善も含まれています。「internal」パッケージのサポートにより、パッケージ間で実装の詳細を共有できます。外部依存関係の「vendoring」の試験的なサポートは、Goプログラムの依存関係を管理するための標準的なメカニズムへの一歩です。新しい「go tool trace」コマンドを使用すると、ランタイムの新しいトレースインフラストラクチャによって生成されたプログラムトレースを視覚化できます。新しい「go doc」コマンドは、Goパッケージドキュメントを表示するための改善されたコマンドラインインターフェイスを提供します。
また、新しいオペレーティングシステムとアーキテクチャポートもいくつかあります。より成熟した新しいポートはdarwin/arm、darwin/arm64(AppleのiPhoneおよびiPadデバイス)、およびlinux/arm64です。 ppc64とppc64le(IBM 64ビットPowerPC、ビッグエンディアンとリトルエンディアン)の試験的なサポートもあります。
新しいdarwin/arm64ポートと外部リンキング機能は、Goモバイルプロジェクトを促進します。これは、AndroidおよびiOSデバイスでアプリを構築するためにGoをどのように使用できるかを確認するための実験です。(Goモバイルの作業自体は、このリリースには含まれていません。)
言語の変更はごくわずかで、マップリテラル構文の制限が解除され、スライスリテラルとの一貫性と簡潔さが向上しました。
標準ライブラリにも多くの追加と改善がありました。 flagパッケージは、よりクリーンな使用メッセージを表示するようになりました。 math/bigパッケージは、Float型を提供して、任意精度の浮動小数点数で計算できるようになりました。 LinuxおよびBSDシステムのDNSリゾルバーの改善により、名前ルックアップを行うプログラムのcgo要件がなくなりました。 go/typesパッケージは、golang.org/x/toolsリポジトリから標準ライブラリに移動されました。(新しいgo/constantパッケージとgo/importerパッケージも、この移動の結果です。)reflectパッケージには、既存のSliceOf関数に類似したArrayOf関数とFuncOf関数が追加されました。そしてもちろん、小さな修正と改善の通常のリストがあります。
詳細については、詳細なリリースノートを参照してください。すぐに始めたい場合は、ダウンロードページにアクセスして、Go 1.5を入手してください。