https://github.com/golang/go に今週あったコミットのうち、僕の目にとまったもをの書いていきます。
os/exec: return error when PATH lookup would use current directory · golang/go@349cc83 · GitHub
先週リバートされていたもののリトライのようです。リバートの原因は x/sys/execabs のテストが壊れたからでしたが、対策をしたとのことでした。
all: REVERSE MERGE dev.boringcrypto (cdcb4b6) into master · golang/go@f771edd · GitHub
別ブランチで開発が進んでいたBoringSSLベースの?暗号まわりの実装が取り込まれたようです。
[dev.boringcrypto] add README.boringcrypto.md, update VERSION · golang/go@dcdcc38 · GitHub にあるREADMEを見るにもともとmasterに取り込む予定はなかったようですが、取り込まれたみたいですね。
io: NopCloser forward WriterTo implementations if the reader supports it · golang/go@0537a74 · GitHub
io.NopCloser
に渡した io.Reader
が io.WriterTo
を実装していた場合に、返ってくる io.ReadCloser
も io.WriterTo
を実装するようになりました。io.WriterTo
に高速な実装がある場合に使われるようになったということですね。
runtime: add GC CPU utilization limiter · golang/go@01359b4 · GitHub
このコミットには以下の2つの内容が含まれているようです
- GCが使うCPUが最大で50%まで程度になるように制限をかける
- プログラムが使うメモリに制限をかけられるようにするためのfeature flagの導入
GCが50%もCPUを使うのはまれだとは思いますが、制限がかかるのはうれしいですね。また、メモリ使用量に制限をかけられるのはコンテナでの利用などでうれしいのではないでしょうか。
runtime/debug: export SetMemoryLimit · golang/go@f01c20b · GitHub
ひとつ上の項目で導入されたメモリ制限をかける機能を runtime/debug
package から扱えるようにするコミットですね。環境変数からセットする必要がなくなるのでうれしいかも?
runtime: decrease STW pause for goroutine profile · golang/go@52bd1c4 · GitHub
goroutineのプロファイルを取得するときの処理に改善が行われ、Stop The Worldが減ったようです。おそらく runtime/pprof
でプロファイルを取得するときのSTWも減っているはずなので、いままでよりも気軽にプロファイルを取得できるようになりますね。
cmd/compile: enable Asan check for global variables · golang/go@f52b4ec · GitHub
runtime: enable address sanitizer in Go · Issue #44853 · golang/go · GitHub に紐付くコミットで、address sanitizerを使ってグローバル変数へのだめなアクセスを検出するオプションが追加されたようです。
sync/atomic: add typed atomic values · golang/go@ffe48e0 · GitHub
sync/atomic
packageに以下の型が追加され、atomicであることが型レベルで保証できるようになりました。いままでは go.uber.org/atomic
を用いていたところが標準パッケージに(一部)取り込まれた感じでしょうか。
Bool
Int32
Int64
Pointer[T]
Uint32
Uint64
Uintptr
ref; atomic package - sync/atomic - pkg.go.dev
cmd/compile: fold constants found by prove · golang/go@e1e056f · GitHub
ちょっとだけ賢い最適化が追加されたようですたとえばこんな感じの最適化が行われるようになるとのこと
- from
- into
crypto/x509: disable signing with MD5WithRSA · golang/go@fdb640b · GitHub
MD5はもう暗号や署名の用途で大丈夫なハッシュではなくなったので、MD5での署名の検証や署名の実行はできなくするようです。危ない物は使わせない、いい方針だと思います。