Googleは、プログラミング言語Goの新しいバージョンのプレビューをリリースしました。 バージョン1.18は、いわゆる「パラメーター化」型を使用した「ジェネリック」プログラミングの機能を追加します。
つまり、Goバージョン1のリリース以降、プログラミング言語に対する最も重要で最大の変更です。ジェネリックスの背後にある考え方は、型を変更することで関数とデータ構造を表現する機能を可能にすることです。 これは、関数にもたらされる実際のデータを抽象化する方法としてインターフェースタイプを定義することによって許可される「一般性」を除外します。
Googleは、Go開発者は、この機能が間違いなく新しいバグにつながることを理解する必要があることを示しています。 したがって、これらの「ジェネリック」には注意してアプローチする必要があります。
Go1.18Betaのその他の機能
上記の機能に加えて、新しいプレビューには、ファジングベースのテストを作成するためのサポートが組み込まれています。 これらのテストは、プログラムがクラッシュしたり、無効な回答を返したりする原因となる入力を自動的に見つけることができます。 Go 1.18 Betaには、新しい「Goワークスペースモード」も用意されています。 これにより、プログラマーは複数のGoモジュールを同時に操作できます。 グーグルによれば、これは大規模なプロジェクトに特に役立ちます。
さらに、バージョン1.18 Betaは、拡張されたgoversion-mコマンドで機能を追加します。 このコマンドは、詳細をコンパイラフラグとして保存するようになりました。 プログラムは、コマンドdebug.ReadBuildInfoを使用して、独自のビルドの詳細を照会できるようになりました。
また、Go1.17以降で利用可能なレジスタベースの呼び出し規約がプレビューに追加されました。 以前のバージョンでは、この機能はx86およびx64システムでのGoコードの高速化にのみ適していましたが、現在はARM64およびPPC64ベースのシステムにも適しています。 これにより、最大20パーセント高速になります。