🚀
Go 1.24 リリースノートの確認とまとめ(2)
ツール
Cgo
. 以下の二つのアノテーションが追加されました。
Go ポインタがC関数を介してエスケープされないことをコンパイラに通知できるため、パフォーマンスが向上する可能性があります。
#cgo noescape cFunctionName
C関数からのコールバック準備が不要であることをコンパイラに伝えることができ、パフォーマンスが向上する可能性があります。
#cgo nocallback cFunctionName
. C関数の互換性チェックの強化
これまでCgoでは、同じC関数に対して互換性のない複数の宣言が存在すると、コンパイルを拒否していましたが、複数ファイル間では動作しない場合がありました。
この問題を解決しました。
Vet
- テストアナライザー
- 誤った名前(命名ルールに違反している)
- 不正な関数の形(テスト関数のシグネチャが正しくない)
- 存在しない識別子を参照している例
テストパッケージ内のコードに対して、go test実行時に上記の内容を自動でチェックしてくれます。
-
printfアナライザー
fmt.Printf(s) のようなコードをチェックし、非定数の文字列をそのままフォーマット文字列として使っている場合に警告を出すようになりました。 -
buildtagアナライザー
go:build 指定の中で、誤った Go のバージョン指定をしている場合に警告を出すようになりました。 -
copylock アナライザーの改善
3つの条件を持つ for ループ内で、sync.Locker(例:sync.Mutex)を含む変数がある場合に警告を出すようになりました。
今日はここまで
Discussion