第6章 Go Toolset 1.23 の変更点
RHEL は、バージョン 1.23 で Go Toolset を提供します。主な機能拡張は、次のとおりです。
for-range
ループは、次のタイプのイテレーター関数を受け入れます。-
func(func() bool)
-
func(func(K) bool)
func(func(K, V) bool)
for-range
ループの反復値は、イテレーター引数関数の呼び出しによって作成されます。参照リンクは、アップストリームのリリースノート を参照してください。
-
- Go Toolchain により、使用状況や破損統計情報を収集できます。これは、Go チームが Go Toolchain がどのように使用され、どのように機能するかを理解するのに役立ちます。デフォルトでは、Go Telemetry はテレメトリーデータをアップロードせず、ローカルにのみ保存します。詳細は、アップストリームの Go Telemetry ドキュメント を参照してください。
-
go vet
サブコマンドには、参照ファイルで使用する Go のバージョンに対して new ですぎるシンボルへの参照をフラグを立てるstdversion
アナライザーが含まれます。 -
cmd
およびcgo
機能は、C リンカーにフラグを渡すための-ldflags
オプションをサポートしています。go
コマンドは、非常に大きなCGO_LDFLAGS
環境変数を使用する場合に、argument list too long
エラーを回避するために、このフラグを自動的に使用します。 -
trace
ユーティリティーは、部分的に壊れたトレースを許容し、トレースデータを回復しようとします。これは、トレースがクラッシュにつながる可能性があるため、クラッシュの場合に役に立ちます。 -
未処理のパニックまたはその他の致命的なエラーの後にランタイムによって出力されるトレースバックには、
goroutine
のスタックトレースを最初のgoroutine
と区別するためのインデントが含まれます。 - プロファイルガイドによる最適化を使用したコンパイラービルド時間のオーバーヘッドが 1 桁のパーセンテージに削減されました。
-
新しい
-bindnow
リンカーフラグにより、動的にリンクされた ELF バイナリーをビルドするときに即時の関数バインディングが有効になります。 -
//go:linkname
リンカーディレクティブは、定義で//go:linkname
でマークされていない標準ライブラリーおよびランタイムの内部シンボルを参照しなくなりました。 -
プログラムが
Timer
またはTicker
を参照しなくなった場合、Stop
メソッドが呼び出されていなくても、これらはガベージコレクションによってすぐにクリーンアップされます。Timer
またはTicker
に関連付けられたタイマーチャネルは、現在バッファーなし (容量 0) になっています。これにより、Reset
メソッドまたはStop
メソッドが呼び出されるたびに、呼び出し後に古い値が送受信されなくなります。 -
新しい
unique
パッケージは、interning
またはhash-consing
などの値を正規化する機能を提供します。 -
新しい
iter
パッケージは、ユーザー定義のイテレーターを使用するための基本的な定義を提供します。 -
slices
およびmaps
パッケージには、イテレーターで使用するいくつかの新しい関数が導入されています。 -
新しい
structs
パッケージは、メモリーレイアウトなど、含まれる struct 型のプロパティーを変更する struct フィールドの型を提供します。 次のパッケージにマイナーな変更が加えられました。
-
archive/tar
-
crypto/tls
-
crypto/x509
-
database/sql
-
debug/elf
-
encoding/binary
-
go/ast
-
go/types
-
math/rand/v2
-
net
-
net/http
-
net/http/httptest
-
net/netips
-
path/filepath
-
reflect
-
runtime/debug
-
runtime/pprof
-
runtime/trace
-
slices
-
sync
-
sync/atomic
-
syscall
-
testing/fstest
-
text/template
-
time
-
unicode/utf16
-
詳細は、アップストリームのリリースノート を参照してください。
Go Toolset は Rolling Application Stream であり、Red Hat は最新バージョンのみをサポートします。詳細は、Red Hat Enterprise Linux Application Streams ライフサイクル ドキュメントを参照してください。