1 ポイント 投稿者 GN⁺ 2025-02-15 | 1件のコメント | WhatsAppで共有
  • 言語の変更点
    • Go 1.24 は、ジェネリック型エイリアスを完全にサポートするようになった。型エイリアスは、定義済みの型のように型パラメータを受け取れる。
  • 性能改善
    • ランタイムで複数の性能改善が行われ、代表的なベンチマークで平均 2〜3% の CPU オーバーヘッド削減を実現。
    • 新しい組み込みマップ実装、小さなオブジェクトのメモリ割り当て効率の向上、新しいランタイム内部ミューテックス実装を含む。
  • ツールの改善
    • go コマンドは、モジュールのツール依存関係を追跡する仕組みを提供する。go get -tool を使って、現在のモジュールにツールディレクティブを追加できる。
    • go vet サブコマンドの新しいテストアナライザーは、テストパッケージのテスト、ファザー、ベンチマーク、サンプル宣言における一般的なミスを報告する。
  • 標準ライブラリの追加
    • 標準ライブラリには、FIPS 140-3 準拠のための新しい仕組みが含まれており、承認済みアルゴリズムの利用にソースコードの変更は不要。
    • これまで x/crypto モジュールにあった複数のパッケージが、標準ライブラリで利用可能になった。
    • ベンチマークでは、より高速でエラーが少ない testing.B.Loop メソッドを使えるようになった。
    • 新しい os.Root 型は、特定のディレクトリ配下でファイルシステム操作を実行する機能を提供する。
    • ランタイムは runtime.AddCleanup という新しいクリーンアップ機構を提供し、runtime.SetFinalizer より柔軟で効率的かつエラーが少ない。
  • WebAssembly サポートの改善
    • Go 1.24 は、Go プログラムが WebAssembly ホストに関数をエクスポートできる go:wasmexport ディレクティブを追加し、Go プログラムを WASI リアクター/ライブラリとしてビルドすることをサポートする。

1件のコメント

 
GN⁺ 2025-02-15
Hacker Newsの意見
  • 特に、より高速なマップ実装と、text/template が関数型をサポートするようになったことがうれしい
  • Go 1.23 で関数型に対する range が導入されたが、ようやく Go テンプレートでも動くようになった
  • ツールディレクティブで指定したツールをインストールする際に、使用するタグを指定できるのか気になる
    • 試してみたが動かなかった(タグなしでインストールされた)
    • go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest を使用
  • os.Root のユースケースが何なのか気になる
    • セキュリティ関連のものだと理解している
    • 内部的に Chroot を使っていないので、結局誰かが Root から脱出する方法を見つけられるのではないかと想像している
  • 地味だが良い
  • 新しいツールフラグに最も期待している
    • いけてない tools.go を削除できるはず
  • GODEBUG=fips140=only を使うと、FIPS 140-3 に準拠していない暗号アルゴリズムがエラーまたはパニックを返す
    • 標準ライブラリが意図的にパニックを起こすという発想は好きではない
    • コードは見ていないが、現時点でエラーを返さない関数でのみ発生するのか気になる
  • ついにジェネリック型エイリアス、ずっと待っていた
  • いいね! GOAUTH のおかげで今回のリリースを楽しみにしていた
    • プライベートな git リポジトリでの作業が少しは面倒でなくなるといい
    • go help goauth を見る限り、あまり大きな期待はしていない