Goブログ

Go 1.18 ベータ 1 が利用可能に、ジェネリクスを搭載

Russ Cox、Goチーム
2021年12月14日

Go 1.18 ベータ 1 をリリースしました。これはダウンロードページにアクセスすると入手できます。

公式のGo 1.18リリースは、まだ数ヶ月先になります。これはGo 1.18の最初のプレビューリリースであり、試して、使ってみて、遭遇した問題を知らせてください。Go 1.18 ベータ 1 は、GoogleのGoチーム全体と世界中のGoコントリビューターによる膨大な作業を表しており、皆様のご意見をお待ちしております。

Go 1.18 ベータ 1 は、Goの新しいパラメータ化された型を使用するジェネリックコードのサポートを含む最初のプレビューリリースです。ジェネリクスはGo 1のリリース以来、Goへの最も重要な変更であり、間違いなく今までに行った最大の単一言語の変更です。大規模な新機能では、新しいユーザーが新しいバグを発見することが一般的であり、ジェネリクスもこの規則の例外ではないと考えています。適切な注意を払ってアプローチしてください。また、特定の種類の再帰的なジェネリック型などの特定の微妙なケースは、将来のリリースに延期されました。そうは言っても、非常に満足している初期の採用者がいることを知っており、ジェネリクスに特に適していると思われるユースケースがある場合は、ぜひ試してみてください。ジェネリクスを始める方法に関する簡単なチュートリアルを公開し、先週のGopherConで講演を行いました。Go開発ブランチモードのGo playgroundで試すこともできます。

Go 1.18 ベータ 1 では、ファジングベースのテストを記述するための組み込みサポートが追加され、プログラムがクラッシュしたり、無効な答えを返したりする原因となる入力を自動的に見つけることができます。

Go 1.18 ベータ 1 では、新しい「Goワークスペースモード」が追加され、複数のGoモジュールを同時に操作できるようになり、大規模なプロジェクトにとって重要なユースケースとなります。

Go 1.18 ベータ 1 には、コンパイラフラグなどのビルドの詳細を記録する拡張されたgo version -mコマンドが含まれています。プログラムは、debug.ReadBuildInfoを使用して独自のビルドの詳細をクエリでき、新しいdebug/buildinfoパッケージを使用して他のバイナリからビルドの詳細を読み取ることができるようになりました。この機能は、Goバイナリのソフトウェア部品表(SBOM)を作成する必要があるツールの基盤となることを目的としています。

今年初め、Go 1.17では、x86-64システムでGoコードを高速化するために、新しいレジスタベースの呼び出し規約が追加されました。Go 1.18 ベータ 1 では、その機能がARM64およびPPC64に拡張され、最大20%の高速化が実現します。

このベータ版リリースに貢献してくれたすべての方々、特にジェネリクスを現実にするために長年たゆまぬ努力を続けてきたGoogleのチームに感謝します。長い道のりでしたが、その結果に非常に満足しており、皆様にも気に入っていただければ幸いです。

詳細については、Go 1.18の完全なドラフトリリースノートを参照してください。

特にベータ版リリースについては、問題が発生した場合は、必ず問題を報告してください。

ベータ版のテストを楽しんでいただき、皆様が2021年の残りをゆっくりと過ごせることを願っています。メリークリスマス!

次の記事:1.18の2つの新しいチュートリアル
前の記事:Goの12年
ブログインデックス