从安全 Rust 中进行增量垃圾回收
gc-arena 编译单元的所在地,它为 Rust 提供了垃圾收集的区域以及安全地与它们交互的方法。 gc-arena 编译单元以及其辅助编译单元 gc-arena-derive 为封闭的"区域"内提供了安全、增量、精确、循环检测的垃圾收集分配。 这些垃圾收集的区域通过以下三种主要技术来实现安全性: 1) 使用 Collect 特性来实现精确跟踪。 此特性是不安全的,如果实现不正确,可能会导致 UB,但该特性可以通过 proc-macro 进行安全地派生。'gc' 生命周期,确保它们无法逃脱变异回调或被分配到错误的区域。基本上是可用且安全的!它由 Adobe Flash Player 模拟器 Ruffle 使用其 ActionScript VM 以及我自己开发的 GameMaker 兼容编译器/VM fabricator 使用,后者用于游戏 Fields of Mistria。集合使用一种增量标记和扫除算法,与 PUC-Rio Lua 中的算法非常相似,并且主要针对低暂停时间进行优化。在变异过程中,分配"债务"会累积,而这个"债务"决定了下一次调用 Arena::collect 将执行的工作量。
在 arena 中保存的指针是围绕 *const T 实现 Copy 的零成本新类型。在变异期间移动或复制 Gc 时,根本不需要任何指针记账。
暂无开放 Issues,或尚未同步最近议题。