The Go Blog(Goブログ)
Go 1.8がリリースされました
本日、GoチームはGo 1.8のリリースを発表できることを嬉しく思います。ダウンロードページから入手できます。標準ライブラリ全体にわたって、パフォーマンスの大幅な向上と変更があります。
64ビットx86向けにGo 1.7で導入されたコンパイラバックエンドが、すべてのアーキテクチャで使用されるようになり、これらのアーキテクチャではパフォーマンスの大幅な向上が見られるはずです。たとえば、ベンチマークプログラムに必要なCPU時間は、32ビットARMシステムで20〜30%削減されました。このリリースでは、64ビットx86システムのパフォーマンスもいくらか向上しています。コンパイラとリンカの速度が向上しました。コンパイル時間はGo 1.7より約15%向上するはずです。この分野ではまだやるべきことがたくさんあります。今後のリリースでは、コンパイル速度がさらに向上することを期待してください。
ガベージコレクションの一時停止は、大幅に短縮され、通常は100マイクロ秒未満、多くの場合は10マイクロ秒まで短縮されます。
HTTPサーバーはHTTP/2プッシュのサポートを追加し、サーバーがクライアントに応答を事前に送信できるようにします。これは、ラウンドトリップを排除することにより、ネットワークレイテンシを最小限に抑えるのに役立ちます。また、HTTPサーバーはグレースフルシャットダウンのサポートも追加し、処理中のすべてのリクエストを処理した後にのみシャットダウンすることで、サーバーのダウンタイムを最小限に抑えることができます。
コンテキスト(Go 1.7で標準ライブラリに追加)は、キャンセルとタイムアウトのメカニズムを提供します。Go 1.8は、database/sql
パッケージ、net
パッケージ、net/http
パッケージのServer.Shutdown
など、標準ライブラリのより多くの部分でコンテキストのサポートを追加します。
sort
パッケージに新しく追加されたSlice
関数を使用すると、スライスのソートがはるかに簡単になります。たとえば、構造体のスライスをName
フィールドでソートするには
sort.Slice(s, func(i, j int) bool { return s[i].Name < s[j].Name })
Go 1.8には、他にも多くの追加、改善、修正が含まれています。変更点の完全なセットと、上記でリストされている改善点の詳細については、Go 1.8リリースノートをご覧ください。
リリースを祝うために、世界中のGoユーザーグループが今週リリースパーティーを開催しています。リリースパーティーはGoコミュニティの伝統となっていますので、今回見逃した方は、1.9が近づいたら注目してください。
このリリースにご協力いただいた200人以上の貢献者に感謝いたします。