Go 1.17 リリース
Go 1.17 is released by Matt Pearring and Alex Rakoczy
本日、GoチームはGo 1.17をリリースできることを大変嬉しく思います。バイナリアーカイブとインストーラーは ダウンロードページから入手できます。
今回のリリースでは、関数の引数と戻り値を渡す新しい方式というかたちで、 コンパイラにさらなる改善が加えられています。この変更により、amd64プラットフォームにおいてGoプログラムの パフォーマンスが約5%向上し、バイナリサイズが約2%削減されることが確認されています。他のプラットフォームへの 対応は今後のリリースで行われる予定です。
Go 1.17ではまた、Windows上での64ビットARMアーキテクチャのサポートも 追加され、Gopherたちはより多くのデバイス上でGoをネイティブに実行できるようになりました。
今回のリリースでは、プルーニングされたモジュールグラフも導入されました。
go.modファイル内でgo 1.17以上を指定しているモジュールでは、そのモジュールグラフに、他のGo 1.17モジュールの
推移的な依存関係すべてではなく、直接の依存関係のみが含まれるようになります。これにより、本来関係のない依存関係の
go.modファイルをダウンロードしたり読み込んだりする必要がなくなり、日々の開発における時間の節約につながります。
Go 1.17には、言語仕様への3つの小さな変更が加えられています。最初の2つは、
プログラムがunsafe.Pointerのルールに、より簡単に準拠できるようにするための、unsafeパッケージ内の新しい関数です。
unsafe.Addはより安全なポインタ演算を可能にし、unsafe.Sliceは
ポインタからスライスへのより安全な変換を可能にします。3つ目の変更は、
実行時にスライスが配列と同じかそれ以上の大きさである限り、
スライスから配列ポインタへの変換を
許可するように、言語の型変換ルールを拡張するものです。
最後に、crypto/x509の検証まわりの改善や、
URLクエリのパース処理の変更をはじめ、その他多くの改善とバグ修正が
行われています。変更点の完全な一覧と、上記の改善に関する詳細については、
完全なリリースノートを参照してください。
コードを書き、バグを報告し、フィードバックを共有し、ベータ版やリリース候補版をテストすることで、今回のリリースに 貢献してくださったすべての方に感謝します。皆さんの努力のおかげで、Go 1.17はできる限り安定したものになりました。 いつものように、何か問題に気づいた場合はissueを立ててください。
新しいリリースを楽しんでいただければ幸いです。
By Matt Pearring and Alex Rakoczy