探索安全的内存管理: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 的绝佳时机,一同发掘它在内存管理领域的潜力,为未来的技术进步贡献力量!
鸿蒙开发工具大赶集
本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。012hertz
Go 微服务 HTTP 框架,具有高易用性、高性能、高扩展性等特点。Go01每日精选项目
🔥🔥 每日精选已经升级为:【行业动态】,快去首页看看吧,后续都在【首页 - 行业动态】内更新,多条更新哦~🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~029kitex
Go 微服务 RPC 框架,具有高性能、强可扩展的特点。Go00Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie058毕方Talon工具
本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python040PDFMathTranslate
PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython06mybatis-plus
mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区018- DDeepSeek-R1探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享,助力研究社区深入探索LLM推理能力,推动行业发展。【此简介由AI生成】。Python00
热门内容推荐
最新内容推荐
项目优选








