Go 1.3 がリリースされました

Go 1.3 is released by Andrew Gerrand

今日、Go 1.3のリリースを発表できることを嬉しく思います。 このリリースは前回のメジャーリリースから6か月後のもので、パフォーマンスの向上、ツールの改善、 新しい環境でのGoの実行サポートなどを提供します。 すべてのGoユーザーはGo 1.3にアップグレードすべきです。 ダウンロードページからリリースを入手でき、改善点と修正点の全リストは リリースノートにあります。 以下はそのハイライトです。

GoのドキュメントサーバーであるGodocが、 静的解析を行うようになりました。-analysis フラグを有効にすると、解析結果がソースコードと パッケージドキュメントの両方のビューに表示されるようになり、Goのプログラムをこれまで以上に 簡単に読み進めて理解できるようになります。

gcツールチェインは、32ビットおよび64ビットのIntelアーキテクチャ上でNative Client (NaCl) 実行サンドボックスを サポートするようになりました。これにより、信頼できないコードを安全に実行できるようになり、 Playgroundのような環境で役立ちます。 システムにNaClをセットアップする方法はNativeClientのwikiページを 参照してください。

このリリースにはDragonFly BSD、Plan 9、Solarisの各オペレーティングシステムに対する実験的なサポートも 含まれています。これらのシステムでGoを使うにはソースからインストールする 必要があります。

ランタイムへの変更により、ガベージコレクタの改善、新しい 「連続的な (contiguous)」ゴルーチンスタック管理戦略、 より高速なレースディテクタ、正規表現エンジンの改善によって、Goバイナリの パフォーマンスが向上しました。

Goリンカの全般的な見直しの一環として、コンパイラとリンカがリファクタリングされました。 以前はリンカの一部だった命令選択のフェーズはコンパイラに移されました。これにより、大規模なプロジェクトにおける インクリメンタルビルドを高速化できます。

ガベージコレクタは、スタックを調べる際に正確 (precise) に なりました(ヒープの収集はGo 1.1以降ずっと正確でした)。これは、整数のようなポインタでない値がポインタと 誤認識されて未使用のメモリの回収を妨げることがなくなったということを意味します。この変更は unsafe パッケージを 使用するコードに影響します。unsafeなコードを書いている場合は、コードの更新が必要かどうかを確認するために リリースノートを注意深く読んでください。

このリリースに貢献してくださった多くの方々に感謝します。皆さんの助けがなければこのリリースは実現しませんでした。

さあ、何を待っているのでしょうか?ダウンロードページに行って、さっそくコードを書き始めましょう。

By Andrew Gerrand