2013年12月1日。Go1.2の最新の安定バージョンのリリースをお知らせします。
5月の前回のGo 1.1リリースから約7か月が経過しており、これはリリース1.1と1.0の間の14か月よりもはるかに短い期間です。 将来のメジャーリリース間の時間間隔は同等になると予想されます。
Go 1.2には、いくつかのマイナーな言語の変更、コンパイラーとツールの実装のいくつかの改善、パフォーマンスの改善のいくつかのポイント、標準ライブラリーの多くの追加と(下位互換性のある)変更が含まれます。
いくつかの変更が既存のプログラムの動作に影響する可能性があるため、リリースノートを詳細に読んでください。 次に、主な変更点と革新を検討します。
新しい3インデックススライス構文は、容量と長さを指定する機能を追加します。 これにより、プログラマはメインアレイの限られた部分にアクセスできるスライスを転送できます。これは、以前は安全でないパッケージを使用する必要があった手法です。
ツールキットの主な新機能は、 コードカバレッジテスト結果を計算および表示するためのツールです 。 詳細を知りたい場合は、 goテストのドキュメントとカバーユーティリティを参照してください。 今週後半に、新しい機能を詳しく調べる記事を公開します。
現在、ディスパッチャはプリエンプティブマルチタスクを使用してゴルーチンを実行し、ゴルーチンが関数に入るときに時々呼び出すことができます。 これにより、集中的な計算を実行しているゴルーチンを定期的に中断し、同じストリームにある他のプランを計画できます。
ゴルーチンのデフォルトのスタックサイズを大きくすると、一部のプログラムのパフォーマンスが向上します。 (古いサイズは、パフォーマンスが重要な場所でスタックセグメントのコストのかかる切り替えを引き起こす傾向がありました。)一方、スタックのサイズとオペレーティングシステムのスレッド数に関する新しい制限は、不正なプログラムによるすべてのマシンリソースのキャプチャを防止する必要があります。 これらの制限は、 ランタイム/デバッグパッケージの新機能を使用して調整できます。
最後に、標準ライブラリの多くの変更のうち、重要な変更には、新しいエンコードパッケージ 、Printf関数のフォーマット文字列のインデックス引数 、 テンプレートパッケージへの便利な追加が含まれます。
リリースの一環として、 Go Playgroundは Go 1.2に更新されました。 また、 Go Tourやblogなど、Playgroundを使用するサービスにも影響します。 また、更新により、サンドボックス内のos 、 ネットおよび安全でないストリームおよびパッケージを使用する機能が追加され、実際のGo環境により類似したものになります。
このリリースを可能にしたすべての人にとって、カーネルに1,600以上の変更を加えた116人の貢献者にバグレポートを提出した多くのユーザー(!):プロジェクトに対するあなたの助けは非常に貴重です。 よろしくお願いします!
PS:12月2日に、Goのカバー記事が記事The cover storyを公開しました。この記事では、テストによるコードカバレッジの程度を判断するツールについて詳しく説明しています。 このユーティリティを使用すると、パッケージ全体と単一の関数の両方のテストカバレッジの割合を計算でき、関数内のカバーされていない場所を視覚的に表示することもできます。 競合検出器などと同様に、このツールは開発者にとって非常に役立ちます。