unsafeコードなしのガベージコレクション

https://fitzgen.com/2024/02/06/safe-gc.html

概要

Trace トレイトと Gc<T> ラッパーを使い、unsafe ブロックを一切排除した Rust 向け GC の紹介です。

まとめ

  • Gc<T> ラッパーと derive マクロにより、unsafe なしで安全にトレース参照を実現
  • GC に起因する未定義動作を根本から排除 — システムレベルの GC 実装では珍しいアプローチ
  • 一方、Gc<> は型をアロケータと密結合させるため、導入や乗り換えのコストが高い

ディスカッション

  • @the-smug-one: Gc<> ラッパーが型を特定のアロケータに縛り付けるため、GC を試すだけでも型の書き直しが必要になると指摘

    trying out a GC is a pain, as you’re stuck first doing the rewrite of your types

  • @foota: C FFI の unsafe コード除去を検討する中でこのライブラリを発見したが、最終的にはポインタマッピングを選択したとのこと
  • 主な論点: Gc<> の人間工学的なコストが安全性の保証に見合うかどうか。

HN で議論を読む


原文(英語): Garbage Collection Without Unsafe Code


Type Link
Added Apr 22, 2026
Modified Apr 22, 2026