The Go Blog
Go 1.24 がリリースされました!
本日、Go チームは Go 1.24 のリリースを発表することに興奮しています。これは、ダウンロードページにアクセスすることで入手できます。
Go 1.24 には、Go 1.23 からの多くの改善点が含まれています。ここに注目すべき変更点をいくつか示します。完全なリストについては、リリースノートを参照してください。
言語の変更点
Go 1.24 は、ジェネリック型エイリアスを完全にサポートするようになりました。型エイリアスは、定義された型のようにパラメーター化できます。詳細については、言語仕様を参照してください。
パフォーマンスの改善
ランタイムにおけるいくつかのパフォーマンス改善により、代表的なベンチマークスイート全体で平均2〜3%のCPUオーバーヘッドが削減されました。これらの改善には、Swiss Tablesに基づく新しい組み込みのmap実装、小規模オブジェクトのより効率的なメモリ割り当て、新しいランタイム内部ミューテックス実装が含まれます。
ツールの改善点
goコマンドは、モジュールのツール依存関係を追跡するメカニズムを提供するようになりました。現在のモジュールにtoolディレクティブを追加するには、go get -toolを使用します。toolディレクティブで宣言されたツールを実行するには、go tool [tool name]を使用します。詳細については、リリースノートのgo コマンドを参照してください。go vetサブコマンドの新しいtestアナライザーは、テストパッケージにおけるテスト、ファザー、ベンチマーク、および例の宣言における一般的な誤りを報告します。詳細については、リリースノートのvetを参照してください。
標準ライブラリの追加
-
標準ライブラリには、FIPS 140-3 準拠を容易にするための一連の新しいメカニズムが含まれるようになりました。承認されたアルゴリズムに新しいメカニズムを使用するために、アプリケーションにソースコードの変更は必要ありません。詳細については、リリースノートのFIPS 140-3 準拠を参照してください。FIPS 140 とは別に、以前はx/cryptoモジュールにあったいくつかのパッケージが、標準ライブラリで利用可能になりました。
-
ベンチマークは、
for range b.Nのような一般的なループ構造の代わりに、for b.Loop() { ... }のようにベンチマーク反復を実行するために、より高速でエラーの少ないtesting.B.Loopメソッドを使用できるようになりました。詳細については、リリースノートの新しいベンチマーク関数を参照してください。 -
新しい
os.Root型は、特定のディレクトリの下に隔離されたファイルシステム操作を実行する機能を提供します。詳細については、リリースノートのファイルシステムアクセスを参照してください。 -
ランタイムは、
runtime.SetFinalizerよりも柔軟で効率的でエラーの少ない新しいファイナライズメカニズム、runtime.AddCleanupを提供します。詳細については、リリースノートのクリーンアップを参照してください。
WebAssembly サポートの改善
Go 1.24 では、Go プログラムが関数を WebAssembly ホストにエクスポートするための新しいgo:wasmexportディレクティブが追加され、Go プログラムを WASI リアクター/ライブラリとしてビルドする機能がサポートされます。詳細については、リリースノートのWebAssemblyを参照してください。
完全で詳細な情報については、Go 1.24 リリースノートを読んでください。ここで言及されているトピックのいくつかについてさらに詳しく説明する後続のブログ記事にも注目してください!
コードとドキュメントの作成、バグの報告、フィードバックの共有、リリース候補のテストによってこのリリースに貢献してくださったすべての方々に感謝いたします。皆様のご尽力により、Go 1.24 は可能な限り安定したリリースとなりました。いつものように、何か問題に気づかれた場合は、問題を報告してください。
Go 1.24 をお楽しみください!