探索安全的内存管理:Shifgrethor
Shifgrethor 是什么?
Shifgrethor 是一个创新性的实验性项目,旨在为 Rust 提供一种精确且安全的垃圾收集(GC)API。这个库的宗旨是保证在使用 GC 的过程中依然能够保持 Rust 原有的所有安全性保证,防止各种内存错误的发生。
如何访问数据?
与传统的 GC API 不同,Shifgrethor 允许直接对托管堆中的对象进行引用。这包括:
- GC 对象可以拥有非托管堆分配的数据,并在这些对象被回收时自动释放。
- GC 对象可持有栈引用,确保在栈上的数据超出作用域后在安全代码中无法读取。
- 可以在堆或栈上存储指向 GC 对象的指针。
更令人惊讶的是,这些组合可以相互关联,如 GC 对象可以拥有指向栈上的引用向量,该向量又包含其他 GC 对象。
关于 Shifgrethor 的垃圾收集
Shifgrethor 实现了一个简单的标记-清除垃圾收集器,但这并不是其重点。它的设计目标是为了提供一个适用于高效、并发、精确的追踪垃圾收集器的 API。尽管当前实现不支持线程安全,但 API 理论上可适应这一需求,并且能用于支持移动 GC 的情况,只要它们提供了适当的固定机制。
项目状态与未来应用
目前,Shifgrethor 处于研发阶段,可能存在重大问题,不适合实际生产环境。但如果你对探索新的内存管理技术感兴趣,欢迎参与和试验。
名称由来
"Shifgrethor" 来自乌苏拉·K·勒古恩的小说《黑暗左手》中的词汇,代表着一种心灵感应的能力,暗示了该项目想要实现内存管理的新维度。
Shifgrethor 如何工作?
Shifgrethor 使用根跟踪算法,通过跟踪从非托管内存到托管内存的引用(称为“根”),找出所有仍然可以通过这些根访问的对象。根使用侵入式集合跟踪,借助 Rust 的固定 API 保证根在确定的栈顺序中被释放。
-
扎根(Rooting): 利用宏
letroot!创建根,根携带生命周期'root,与创建它的作用域相同。Gc指针表示已扎根的数据,其生命周期与创建它的根一致。 -
追踪(Tracing): 需要定义如何通过类型追踪到其他对象。类型需要实现特定的追踪trait,并使用衍生访问器保证安全接口。
此外,Shifgrethor 限制了在析构函数中直接操作 GC 数据,而是提供了一个安全的最终化方法 finalize(),仅允许无 GC 引用的情况执行清理。
总的来说,Shifgrethor 尝试为 Rust 社区提供一种全新的思考方式,以解决复杂的内存管理和安全问题,让开发者能够在享受 GC 带来的便利的同时,依旧保持 Rust 的内存安全性。
现在,是你探索 Shifgrethor 的绝佳时机,一同发掘它在内存管理领域的潜力,为未来的技术进步贡献力量!
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C092
baihu-dataset异构数据集“白虎”正式开源——首批开放10w+条真实机器人动作数据,构建具身智能标准化训练基座。00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python058
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
AgentCPM-Explore没有万亿参数的算力堆砌,没有百万级数据的暴力灌入,清华大学自然语言处理实验室、中国人民大学、面壁智能与 OpenBMB 开源社区联合研发的 AgentCPM-Explore 智能体模型基于仅 4B 参数的模型,在深度探索类任务上取得同尺寸模型 SOTA、越级赶上甚至超越 8B 级 SOTA 模型、比肩部分 30B 级以上和闭源大模型的效果,真正让大模型的长程任务处理能力有望部署于端侧。Jinja00