> Source: https://www.ymotongpoo.com/works/goblog-ja/go1.8/


# Go 1.8のリリース

[Go 1.8 is released](https://go.dev/blog/go1.8) by Chris Broadfoot

本日、Goチームは Go 1.8 のリリースを発表できることを嬉しく思います。[ダウンロードページ](https://go.dev/dl/) から入手できます。
標準ライブラリ全体にわたって、大幅なパフォーマンスの改善と変更が加えられています。

[Go 1.7](https://go.dev/blog/go1.7) で導入された64ビットx86向けのコンパイラバックエンドが、
今回のリリースからすべてのアーキテクチャで使われるようになり、それらのアーキテクチャでは大幅な
[パフォーマンスの改善](https://go.dev/doc/go1.8#compiler)が見込めます。
たとえば、私たちのベンチマークプログラムに必要なCPU時間は、32ビットARMシステムでは20〜30%削減されました。
64ビットx86システムについても、今回のリリースではいくらか控えめながらパフォーマンスの改善があります。
コンパイラとリンカも高速化されました。
コンパイル時間はGo 1.7と比べて約15%改善されるはずです。
この領域についてはまだやるべきことが残っており、今後のリリースではさらなるコンパイル速度の向上が期待できます。

ガベージコレクションの停止時間は[大幅に短縮され](https://go.dev/doc/go1.8#gc)、
通常は100マイクロ秒未満、しばしば10マイクロ秒程度にまで抑えられるはずです。

HTTPサーバーは[HTTP/2 Push](https://go.dev/doc/go1.8#h2push)のサポートを追加しました。
これにより、サーバーはクライアントへのレスポンスを先回りして送信できるようになります。
これはラウンドトリップをなくすことでネットワークレイテンシを最小化するのに役立ちます。
またHTTPサーバーは[グレースフルシャットダウン](https://go.dev/doc/go1.8#http_shutdown)のサポートも追加しました。
これにより、サーバーは処理中のすべてのリクエストの処理を終えてからシャットダウンすることで、
ダウンタイムを最小限に抑えられるようになります。

（Go 1.7で標準ライブラリに追加された）[コンテキスト](https://go.dev/pkg/context/)は、
キャンセルとタイムアウトの仕組みを提供します。
Go 1.8では、標準ライブラリのより多くの部分でコンテキストのサポートが[追加され](https://go.dev/doc/go1.8#more_context)、
[`database/sql`](https://go.dev/pkg/database/sql) や [`net`](https://go.dev/pkg/net) パッケージ、
そして `net/http` パッケージの [`Server.Shutdown`](http://beta.golang.org/pkg/net/http/#Server.Shutdown) が含まれます。

`sort` パッケージに新しく追加された [`Slice`](https://go.dev/pkg/sort/#Slice) 関数によって、
スライスのソートがずっと簡単になりました。たとえば、構造体のスライスを `Name` フィールドでソートするには
次のように書けます。

```go
sort.Slice(s, func(i, j int) bool { return s[i].Name < s[j].Name })
```

Go 1.8にはこの他にも多くの追加、改善、修正が含まれています。
変更点の全容や、ここまでに挙げた改善点についての詳しい情報は、
[Go 1.8 リリースノート](https://go.dev/doc/go1.8.html) を参照してください。

リリースを祝して、世界中のGoユーザーグループが今週[リリースパーティー](https://go.dev/wiki/Go-1.8-release-party)を
開催しています。リリースパーティーはGoコミュニティの伝統になりつつあるので、
もし今回参加しそびれても、1.9が近づいてきたときにはぜひ注目してみてください。

今回のリリースに力を貸してくれた200名を超えるコントリビューターに感謝します。

By Chris Broadfoot

