uniqueパッケージから学ぶinterningと弱参照
Asakusa.go#3(@ドクターズプライムさん)で登壇してきました! Go1.23で追加されたuniqueパッケージの内部実装をたどりながら、Goの言語特性や既に存在していた最適化について、新しく導入された弱参照について調べました。
発表内容
- stringの割り当てと不変性、SSAによる最適化について学ぶ
- uniqueパッケージの導入背景と特性を知り、ベンチマークをとる
- 主に新しく言語に取り入れられた弱参照を利用したmapの掃除について内部実装を辿る
雑談
準備大変だったあああ😭
セッション枠がキャンセルされてその代打を引き受けてから2週間寝ずに調査・資料作成しました。 健康とメンタルの臨界点ギリギリで頑張りました。褒めてください🥺
uniqueパッケージを題材に選んだ理由は、Go1.23のリリースノートで挙動と存在理由が最も理解できない項目だったからです。 今回の発表準備を通じて、新しく入った機構(TrieHashMap/WeakPointer/Unique)への理解はもちろん、Goの言語特性や既に存在していた最適化についても知ることができて非常に学びになりました👏
特に弱参照の機構は仕組みは個人的に面白かったです! (既にその機構が存在している他の言語利用者からすれば目新しくもなんともないかとは存じますがmm
runtimeについての知識がほぼなかったので調査が間に合うか不安でしたが、地道にコードリーディングやデバッグをして一定筋を通した資料ができてよかったです。(言ってること間違ってないといいなぁ…) Go言語自身に対するデバッグ力は昔よりかは鍛えられた気がします、嬉しい。
イベント当日はすごく暖かい雰囲気で、お酒を飲みながらわいわい技術の話をできるのがいい意味で不思議な感じで、とても楽しかったです。 肝心の発表は時間の想定が甘くて結構スライドを飛ばしちゃったのが少し惜しかったですが、伝えたいことは言えたので満足です! また、懇親会では様々な企業で働くエンジニアの方々と情報交換できました👏
余談ですが、会場にはちょっとだけ遅刻しましちゃいました、ごめんなさい😇 浅草って思ったより遠いんですね、、、タクシーを使う暴挙に出た上で間に合わなかったorz
こういう現実世界における詰めの甘いところがエンジニアの可愛げってものですよね。 嘘です、ごめんなさい。