The Go Blog (Go ブログ)

Go 1.21 リリース候補

Go チームを代表して、Eli Bendersky
2023年6月21日

Go 1.21 の最初のリリース候補 (RC) が本日、ダウンロードページで公開されました! Go 1.21 には、新機能と改良点が満載です。RC(リリース候補)を入手することで、早期に試用し、ワークロードで試して、最終リリース(8月に予定)前に問題を報告できます。Go 1.21 の注目すべき変更点と機能を以下に示します。完全なリストについては、完全なリリースノートを参照してください。

(Go 1.21 の最初の RC は、go1.21rc1 のタグ付け後にバグが見つかり修正されたため、go1.21rc2 と呼ばれています)

ツールの改善

  • 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 コンパイラ自体が 1.21 の PGO を有効にして再構築されたため、ホストアーキテクチャに応じて Go プログラムのビルド速度が 2~4% 向上しました。
  • ガベージコレクターのチューニングにより、一部のアプリケーションではテールレイテンシが最大 40% 削減される場合があります。
  • runtime/trace でトレースを収集する場合の CPU コストが、amd64 および arm64 で大幅に削減されました。

WASI への新しい移植

Go 1.21 は、WebAssembly System Interface (WASI)、プレビュー 1 (GOOS=wasip1GOARCH=wasm) のための実験的な移植を追加します。

より一般的な WebAssembly (WASM) コードの記述を容易にするため、コンパイラは WASM ホストから関数をインポートするための新しいディレクティブ go:wasmimport もサポートしています。

Go 1.21 RC をダウンロードして、お試しください! 問題が発生した場合は、問題を報告してください。

次の記事:Govulncheck v1.0.0 がリリースされました!
前の記事:Go 開発者調査 2023 年第 1 四半期の結果
ブログインデックス