3か月ほどのベータ期間を経て、Go 1.3がリリースされた。1.2から言語機能に変更はないが、さまざまな性能改善、Native-Clientでのコマンドラインプログラム実行サポート、その他の強化がなされている。
最も興味深い性能および実装変更の一部を以下に挙げる。
- Go routineスタックは古い "segmented" モデルの代わりにcontiguousモデルを使うようになった。
- GCが高速になった - 並列スイープアルゴリズムを使い、よりよい並列化と巨大なページを持つことで、GC停止時間を50-70%削減した。スタック上の値についても動作がpreciseになった。
- ランタイムがdeferを効率よく扱うようになった。
- Race detectorが約40%高速になった。
- Regexp (正規表現パッケージ) に、特定の単純な表現を高速化するもう1つの1パス実行エンジンが導入された。
- sync.Pool - この新しい型は、システムによってメモリをキャッシュを実装する効率のよい仕組みを提供する。そのメモリはシステムによって再利用できる。
- 小さなマップのイテレーションの順序が一定ではなくなった。これは開発者がマップのイテレーション順序に依存したコードを書くのを避けるためだ。そのようなコードは一部のシステムでしかうまく動かない。
ツールの改善も含まれている。
- godocがインデックス化したコードの静的解析を実行できるようになった。
- misc/benchcmp (ベンチマークツール) がGoプログラムとして書き直された。
- コンパイラとリンカがリファクタリングされた。命令選択フェーズがコンパイラに移されたことで、大きなプロジェクトの増加するビルド時間を高速化できる。
- gcツールチェインが 32-bitおよび64-bit Intelアーキテクチャ上のNative Client (NaCl) 実行サンドボックスをサポートするようになった。Go 1.3が生成するバイナリはまだGoogle Chromeで直接実行することはできないことに注意。
crypto/tlsライブラリに関するセキュリティ修正もなされている。
詳しくは、リリースノートにある変更を参照しよう。