Goブログ
Go 1.21がリリースされました!
本日、GoチームはGo 1.21のリリースを発表できることを嬉しく思います。ダウンロードページから入手できます。
Go 1.21には、多くの新機能と改良が含まれています。注目すべき変更点をいくつか紹介します。完全なリストについては、リリースノートを参照してください。
ツールの改良
- 1.20でプレビュー版として発表したプロファイルガイド付き最適化(PGO)機能が、正式に利用可能になりました!メインパッケージのディレクトリに`default.pgo`という名前のファイルが存在する場合、`go`コマンドはそのファイルを使用してPGOビルドを有効にします。PGOのドキュメントで詳細を確認してください。幅広いGoプログラムでPGOの影響を測定した結果、パフォーマンスが2~7%向上しました。
go
ツールは、後方および前方の言語互換性をサポートするようになりました。
言語の変更
- 新しい組み込み関数:min、maxおよびclear。
- ジェネリック関数の型推論に関するいくつかの改良。 仕様における型推論の説明が拡張され、明確化されました。
- 今後のGoバージョンでは、Goプログラミングで最も一般的な問題の1つであるループ変数のキャプチャに対処する予定です。Go 1.21では、環境変数を使用してコードで有効にできるこの機能のプレビューが提供されています。詳細については、LoopvarExperiment wikiページを参照してください。
標準ライブラリの追加
- 構造化ログのための新しいlog/slogパッケージ。
- 任意の要素タイプのスライスに対する一般的な操作のための新しいslicesパッケージ。これには、sortパッケージよりも一般的に高速で人間工学的なソート関数も含まれます。
- 任意のキーまたは要素タイプのマップに対する一般的な操作のための新しいmapsパッケージ。
- 順序付けられた値の比較のための新しいユーティリティを含む新しいcmpパッケージ。
パフォーマンスの向上
PGOを有効にした場合のパフォーマンス向上に加えて
- Goコンパイラ自体がPGOを有効にして1.21で再構築されたため、ホストアーキテクチャに応じて、Goプログラムのビルド速度が2〜4%向上しました。
- ガベージコレクターのチューニングにより、一部のアプリケーションではテールレイテンシが最大40%削減される可能性があります。
- runtime/traceを使用したトレースの収集によるCPUコストが、amd64およびarm64で大幅に削減されました。
WASIへの新しいポート
Go 1.21では、WebAssembly System Interface (WASI)プレビュー1(GOOS=wasip1
、GOARCH=wasm
)の試験的なポートが追加されました。
より一般的なWebAssembly(Wasm)コードの作成を容易にするため、コンパイラはWasmホストからの関数のインポートのための新しいディレクティブ`go:wasmimport`もサポートしています。
コードの記述、バグの報告、フィードバックの共有、リリース候補のテストを通じてこのリリースに貢献してくれた皆様に感謝いたします。皆様の努力のおかげで、Go 1.21は可能な限り安定した状態になっています。いつものように、問題が発生した場合は、問題を報告してください。
Go 1.21をお楽しみください!
次の記事:後方互換性、Go 1.21、およびGo 2
前の記事:プロジェクトテンプレートの実験
ブログインデックス