Go言語がGenericsを導入、過去最大の変更となる「Go 1.18」正式版リリース
今回は「Go言語がGenericsを導入、過去最大の変更となる「Go 1.18」正式版リリース」についてご紹介します。
関連ワード (中心、性能改善、簡潔等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Googleが中心となってオープンソースで開発されているGo言語の最新版となる「Go 1.18」正式版がリリースされました。
Go go1.18 is released!
Release notes: https://t.co/UFumhMjcOL
Download: https://t.co/fnDCVVhJXK#golang pic.twitter.com/uWNSy5V7nv
— Go (@golang) March 15, 2022
ブログ「Go 1.18 is released!」によると、Go 1.18は、「massive release that includes new features, performance improvements, and our biggest change ever to the language.」(新機能、性能改善、そして過去最大の変更の変更を含む大規模なリリース)と説明されるほど、重要な意味を持つリリースです。
Genericsの導入、Fuzzingが標準機能に
その最大の変更点が、Genericsの導入です。Go 1.18のGenericsは、パラメータ化された型(Type Parameters)のプロポーザルを実装したものとなりました。
似たような処理を異なる型に対して適用する場合に、パラメータに型を与えることで簡潔に記述できるようになります。
Genericsが実装されたGo言語は、十分にテストされ、これまでのGo言語と完全なバックワード互換性があるとされています。
しかし本番環境でGenericsを用いたコードは事実上まだ存在しません。これから多くのプログラマがGenericsを用いたGo言語のコードを記述し、実行することになるため、まだ見つかっていない問題が顕在化する可能性はあります。そのため、Genericsを本番環境に適用する前には適切な注意を払うべきだとも説明されています。
また、Fuzzingと呼ばれる、検査対象のソフトウェアに問題を引き起こしそうなデータ(これが「Fuzz」と呼ばれる)を大量に送り込み、その応答や挙動を監視するテスト手法もGo 1.18の標準ツールの機能として取り込まれました。
Apple M1、ARM64、PowerPC64では、性能が最大で20%向上しています。
そのほか新機能や変更点の詳細については「Go 1.18 Release Notes」を参照してください。