The Manchester Garbage Collector and purple-garden's runtime
4 months ago
- #scripting-language
- #garbage-collection
- #performance
- 曼彻斯特垃圾回收器(mgc)专为purple-garden运行时设计,通过结合多种垃圾回收技术提升性能。
- Purple-garden是一种极简脚本语言,注重性能、低内存占用和可嵌入性,采用C语言实现为基于寄存器的字节码编译器与虚拟机。
- mgc采用复合策略:预分配内存区域分配、通过递归根集追踪进行可达性分析,以及压缩式半空间复制。
- mgc的关键特性包括快速分配、低分配延迟和减少碎片化。
- mgc的垃圾回收过程分为三个阶段:标记阶段、复制阶段和重置/交换阶段。
- purple-garden的垃圾回收根集包含虚拟机寄存器和存储局部变量绑定的变量表。
- purple-garden的值设计采用最小化开销方案,使用位标签表示类型和可选性,实现零分配可选值。
- 运行时使用可扩展的碰撞分配器来减少系统调用并提升分配性能。
- purple-garden中的字符串通过长度和哈希值抽象,规避了C风格字符串的缺陷。
- 垃圾回收根据内存使用阈值触发,在离开作用域后检查以降低延迟。
- mgc避免使用分代回收或引用计数等复杂功能,专注于短生命周期脚本的简洁性与性能。
- 设计包含关键运行不变式与假设,如寄存器规范和堆分配标记。
- 目前正在用Rust重写purple-garden,以利用Rust的抽象、错误处理和集合库来提升可维护性与性能。