Go 1.18 Beta 1公開、ジェネリクスを搭載
Go 1.18 Beta 1 is available, with generics by Russ Cox, for the Go team
Go 1.18 Beta 1 をリリースしました。ダウンロードページ から入手できます。
Go 1.18 の正式リリースはまだ数ヶ月先になります。今回はGo 1.18の最初のプレビューリリースであり、 実際に試してもらい、使い倒してもらい、遭遇した問題を教えてもらうためのものです。 Go 1.18 Beta 1は、GoogleのGoチーム全体と世界中のGoコントリビューターによる膨大な作業の結晶であり、 みなさんの感想を聞くのを楽しみにしています。
Go 1.18 Beta 1は、パラメータ化された型を用いたジェネリックなコード という、Goの新しいサポート機能を含む最初のプレビューリリースです。ジェネリクスはGo 1のリリース以来 もっとも大きな変更であり、これまでで最大の言語仕様の変更であることは間違いありません。 どんな大きな新機能でも、新しいユーザーが新しいバグを発見するのはよくあることで、ジェネリクスも その例外ではないと考えています。十分に注意して取り組んでください。また、特定の種類の再帰的な ジェネリック型など、いくつかの微妙なケースについては将来のリリースに先送りされています。 とはいえ、すでに満足している早期採用者もいますので、ジェネリクスに特に適していると思われる ユースケースがあれば、ぜひ試してみてください。 ジェネリクスを使い始めるための簡単なチュートリアル を公開したほか、 先週開催されたGopherConでの講演 も行いました。 Go開発版ブランチモードのGo Playground で実際に試すこともできます。
Go 1.18 Beta 1では、プログラムをクラッシュさせたり不正な結果を返したりする入力を自動的に見つけ出す、 ファジングベースのテスト を書くための組み込みサポートが追加されました。
Go 1.18 Beta 1では、複数のGoモジュールを同時に扱えるようにする新しい 「Goワークスペースモード」が追加されました。 これは大規模なプロジェクトにとって重要なユースケースです。
Go 1.18 Beta 1には拡張された go version -m コマンドが含まれており、コンパイラフラグなどの
ビルド詳細を記録するようになりました。プログラムは
debug.ReadBuildInfo を使って自身のビルド詳細を
照会でき、新しい debug/buildinfo パッケージを使って
他のバイナリのビルド詳細を読み取れるようになりました。この機能は、Goバイナリのソフトウェア部品表
(SBOM)を生成する必要があるあらゆるツールの基盤となることを意図しています。
今年の初め、Go 1.17ではx86-64システム上でGoコードを高速化するための新しいレジスタベースの 呼び出し規約が追加されました。Go 1.18 Beta 1ではこの機能をARM64とPPC64に拡張し、最大で20%の 高速化を実現しています。
このベータリリースに貢献してくれたすべての人々に感謝します。特に、ジェネリクスを現実のものに するために何年も休むことなく取り組んできたGoogleのチームに感謝します。長い道のりでしたが、 その成果にはとても満足していますし、みなさんにも気に入ってもらえることを願っています。
詳細については、Go 1.18のドラフトリリースノート の全文を 参照してください。
いつものことですが、特にベータリリースでは、問題に気づいたら issueを立てて お知らせください。
ベータ版のテストを楽しんでいただければ幸いです。そして、2021年の残りをゆっくりと過ごせますように。 よい休日を!
By Russ Cox, for the Go team