「Go 1.8」が公開、性能を改善

 Googleの「Go」言語開発チームは2月16日、最新版となる「Go 1.8」公開を発表した。性能を中心に多数の強化が加わっている。

 Go 1.8は、2016年8月に公開されたGo 1.7に続くリリースとなる。本リリースでは、バージョン1.7で64ビット版x86向けのみに導入されていた新コンパイラバックエンドがすべてのアーキテクチャで利用できるようになった。これによってコード生成が効率化されるという。性能面では、32ビットARMシステム上のCPU時間が20~30%削減されたというベンチマーク結果があるとのこと。コンパイラやリンカも高速化されており、コンパイル時間はGo 1.7と比較して約15%改善しているという。

 ガベージコレクタも改善し、「stop-the-world」スタックの再スキャンを削減することでガベージコレクタの停止時間を減少させた。通常で100マイクロ秒以下、10マイクロ秒を下回ることもあるという。

 net/httpパッケージでは、HTTP/2プロトコルで標準化された、クライアントからのリクエストなしに必要と思われるファイルをWebサーバーから送信できるサーバープッシュ機能をサポートした。そのほか、HTTP Serverで「graceful shutdown」などを可能にするServer.Shutdownメソッドが新たに追加された。

 1.7で標準ライブラリに導入したcontext.Contextで、キャンセルとタイムアウトのメカニズムを提供するようになった。既存のパッケージでサポートするコンテキストが増え、例えば、上記のServer.Shutdownメソッドでコンテキスト引数を利用できるほか、新しいnet.Resolverの9種類のLookupメソッドでも利用できるという。

 このほか多数の細かな機能強化なども行われているほか、構造体に付与したタグの扱いが変更されるといった言語仕様の変更も加わっている。また、対応アーキテクチャとして新たに32ビットMIPSのサポートが追加された。

Go
https://golang.org/