Hasty Briefsbeta

双语

A new way to manage memory: no garbage collection, extremely fast & safe access

6 hours ago
  • U没有追踪垃圾收集器;所有权形成了一个具有强父到子引用的有向无环图,所有者上的零引用计数会释放其整个子树,而不会产生全局暂停。
  • 每个所有者有一个slab链分配器,通过bump指针分配,并按2的幂次slab增长,因此释放成本为O(log n)个slab释放,对于典型作用域实际上是常数。
  • 动态值使用NaN-boxed标签化的8字节表示,避免了为整数、布尔值和none等叶值进行单独的堆分配。
  • 列表使用稳定的2的幂次slab:追加时现有元素从不移动,随机存取使用紧凑的slab指针头部进行位运算slab算法,迭代遍历连续的slab内存。
  • 映射实现为稳定的有序密集存储:并行的键/值列表,以插入索引作为权威指针;反向的键到索引解析器是派生的加速,而不是映射本身。
  • 映射优化尽可能避免反向查找:迭代器来源、编译器常量键、符号和缓存形状让许多访问直接编译为稳定的索引读取。
  • 解析器代允许反向索引更改算法(扫描、SwissTable、基数、紧凑哈希),而不需要重新编号权威映射存储;密封的代变为不可变,并且可以并行查询。
  • 删除和重新插入使用墓碑和重新插入时追加;重新编号条目的压缩会创建新的映射存储代,并且仅使未被代标识保护的缓存失效。
  • 所有权、能力和确定性是显式的:有影响的操作需要传递能力,反向引用是弱的,并且在引用对象死亡后解析为none,防止所有权循环。
  • 树状数据结构可以通过具有持久共享的映射来实现;并发可以使用根上的CAS和基于纪元/回收的无锁读取的不可变版本。