Slide 19
Slide 19 text
uniqueパッケージによって必要性が明らかに
● uniqueパッケージは値のinterningを実現するもの。
● もともとGoはinterningに関するruntime側のサポートが弱かった。
● go4.org/internというコミュニティ実装に頼っていたけど、Finalizerやuintptrを
使ってGCに追跡されない形でポインタを保持したり、安全ではないという問題を
抱えていた(Goのアップデート毎に手動更新が必要などの問題もあった)。
● interningのサポートを求めるコミュニティの声はマイノリティだけど、net/netip
の前身であるinetaf/netaddrの内部で使用されていて、実は多くの人(Go modules
全体の0.1%と想定)がそのリスクに依存している状態だとわかった。
● ならちゃんとruntime側のサポートも追加してしっかり実装しよう。
○ それがuniqueパッケージの提案。
● さらにuniqueパッケージの内部で使われるweak pointerのニッチだけど汎用的な価
値が認知される。