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


# Go 1.17 リリース

[Go 1.17 is released](https://go.dev/blog/go1.17) by Matt Pearring and Alex Rakoczy

本日、GoチームはGo 1.17をリリースできることを大変嬉しく思います。バイナリアーカイブとインストーラーは
[ダウンロードページ](https://go.dev/dl/)から入手できます。

今回のリリースでは、[関数の引数と戻り値を渡す新しい方式](https://go.dev/doc/go1.17#compiler)というかたちで、
コンパイラにさらなる改善が加えられています。この変更により、amd64プラットフォームにおいてGoプログラムの
パフォーマンスが約5%向上し、バイナリサイズが約2%削減されることが確認されています。他のプラットフォームへの
対応は今後のリリースで行われる予定です。

Go 1.17ではまた、[Windows上での64ビットARMアーキテクチャ](https://go.dev/doc/go1.17#ports)のサポートも
追加され、Gopherたちはより多くのデバイス上でGoをネイティブに実行できるようになりました。

今回のリリースでは、[プルーニングされたモジュールグラフ](https://go.dev/doc/go1.17#go-command)も導入されました。
`go.mod`ファイル内で`go 1.17`以上を指定しているモジュールでは、そのモジュールグラフに、他のGo 1.17モジュールの
推移的な依存関係すべてではなく、直接の依存関係のみが含まれるようになります。これにより、本来関係のない依存関係の
`go.mod`ファイルをダウンロードしたり読み込んだりする必要がなくなり、日々の開発における時間の節約につながります。

Go 1.17には、[言語仕様への3つの小さな変更](https://go.dev/doc/go1.17#language)が加えられています。最初の2つは、
プログラムが`unsafe.Pointer`のルールに、より簡単に準拠できるようにするための、`unsafe`パッケージ内の新しい関数です。
`unsafe.Add`は[より安全なポインタ演算](https://go.dev/pkg/unsafe#Add)を可能にし、`unsafe.Slice`は
[ポインタからスライスへのより安全な変換](https://go.dev/pkg/unsafe#Slice)を可能にします。3つ目の変更は、
実行時にスライスが配列と同じかそれ以上の大きさである限り、
[スライスから配列ポインタへの変換](https://go.dev/ref/spec#Conversions_from_slice_to_array_pointer)を
許可するように、言語の型変換ルールを拡張するものです。

最後に、[`crypto/x509`の検証まわりの改善](https://go.dev/doc/go1.17#crypto/x509)や、
[URLクエリのパース処理の変更](https://go.dev/doc/go1.17#semicolons)をはじめ、その他多くの改善とバグ修正が
行われています。変更点の完全な一覧と、上記の改善に関する詳細については、
[完全なリリースノート](https://go.dev/doc/go1.17)を参照してください。

コードを書き、バグを報告し、フィードバックを共有し、ベータ版やリリース候補版をテストすることで、今回のリリースに
貢献してくださったすべての方に感謝します。皆さんの努力のおかげで、Go 1.17はできる限り安定したものになりました。
いつものように、何か問題に気づいた場合は[issueを立てて](https://go.dev/issue/new)ください。

新しいリリースを楽しんでいただければ幸いです。

By Matt Pearring and Alex Rakoczy

