0
0

More than 1 year has passed since last update.

Go の気になったコミット (2021 年 11 月)

Last updated at Posted at 2021-12-09

golang/go の master ブランチに行われたコミットから個人的に気になったものをリストにしたものです。

前回作成したリストはこちら。

軽く説明を追加していますが勘違いや誤りがあるかもしれません。

Topic

  • 既存の標準パッケージよりも改善された IP アドレス表現を提供する net/netip が追加されました。
  • 新しい GC Pacer (GC をいつ動かすか決定するアルゴリズム) が実装され、デフォルトで有効になりました。
  • 安全ではないとされている証明書の署名や TLS バージョンに対する扱いが変更されています。

Commits

2021-11-02

既存の標準パッケージよりも改善された (小さく比較可能でメモリ割り当てが発生しない) IP アドレス表現を提供する net/netip が追加されました。 1 2
既存とは異なる関数への移行が必要ですが特に UDP の送受信で恩恵が大きいようです。
記載していませんが UDP 送受信周りを最適化する変更もいくつかマージされています。

2021-11-03

ビルドされたバイナリが必要とするアーキテクチャレベルを起動時にチェックするようになりました。 3
Go 1.18 では同じ amd64 アーキテクチャでもより新しい世代で追加された命令を利用するようになりました 4 が、起動時にチェックしないと未サポートの命令を実行したタイミングで SIGILL が発生するので地味に助かる処理だと思います。

2021-11-05

新しい GC Pacer (GC をいつ動かすか決定するアルゴリズム) が実装され、デフォルトで有効になりました。 5
これにより最小ヒープサイズが 4 MiB から 512 KiB に削減されているのですが性能上の問題が見つかっておりヒープサイズは元に戻されています。 6 7

2021-11-06

netip.Addr が提供する関数のメモリ割り当てが改善されています。
この PR をきっかけに知ったのですが名前付き戻り値を使うことでメモリコピーを減らせるようです。 8
とはいえ最適化目的での利用は推奨されていません 9 し、コンパイラに最適化を頑張ってほしいところです。

SHA-1 形式で署名された証明書の検証が無効化されました。 10

TLS クライアントが要求するデフォルトの最小バージョンが TLS 1.2 になりました。 11
段階的に適用範囲を拡大していき、将来的に TLS 1.0 と TLS 1.1 のサポートを削除する予定みたいです。

2021-11-09

少し前の変更で Windows 環境でクラッシュダンプが作成できるようになった 12 のですが、条件次第で Microsoft にクラッシュダンプ (メモリの内容を含む) が自動アップロードされる 13 ため revert されました。

2021-11-13

HTTP/2 にてレスポンスボディを Close()した場合にエラーが返ってくることがある不具合が修正されています。 14
Go 1.17.3 のリグレッションとのことです。

2021-11-17

any (Go 1.18 で追加された事前定義された識別子) を使ったソースを go run ではなく go build すると失敗する問題の修正です。 15
ジェネリクスが有効な場合は runtime のコンパイル時に事前定義された識別子として any が出力されるようになりました。

2021-11-20

事前定義された識別子である any を interface{} のエイリアスとして処理する修正です。 16
これは Go の仕様にも記載されている 17 そうですが、実際には Alias ではなく Defined type として処理されていたそうです。

For convenience, the predeclared type any is an alias for the empty interface.

雑感

リストに記載していないのですが相変わらずジェネリクス関連の修正が多いです。
また、 Go 1.18 リリースに向けてドキュメント周りの修正も多数行われていました。

ジェネリクスに限らず Go 1.18 では新しく追加された便利なパッケージや関数が多いため古い Go では動かないパッケージが増えそうだなと感じています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0