Hasty Briefsbeta

双语

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的抽象、错误处理和集合库来提升可维护性与性能。