
Goose 是一种新兴的内存安全系统级编程语言,旨在提供比 C++ 和 Rust 更高的运行效率与更低的内存占用。该语言摒弃了堆内存、垃圾回收(GC)、分配器及生命周期注解,核心设计理念为“无堆”,所有动态值均内联存储于编译器管理的数据栈上,通过指针偏移实现内存增长,作用域退出即完成释放。
性能优势:速度与内存的双重优化
据基准测试数据显示,在十六项测试中,Goose 的运行速度达到惯用 C++ 的 3.3 倍、手动优化 C++ 的 1.16 倍以及最佳安全 Rust 的 1.12 倍。同时,其内存占用分别减少了 1.9 倍、1.3 倍和 1.2 倍。这些优势源于其结构性差异,包括无分配器、无引用计数、无析构函数等特性。
核心技术特性
数据永不移动与稳定引用:Goose 中的数据在数组存在期间保持位置固定,对增长中数组的引用始终有效,避免了 C++ 中需调用 reserve 或 Rust 中使用索引的繁琐操作。
零注解内存安全:编译器自动推断每个引用的根节点,无需生命周期语法或别名规则,仅禁止引用存活时间超过其拥有者。
扁平化内存布局:字符串、数组及记录均为连续内存块,内部无指针。例如,一个在 C++ 中占 160 字节且需一次分配的记录,在 Goose 中仅占 29 字节且零分配。
高效枚举与相对引用:可变模式代数数据类型(ADT)使每个值仅占据实际大小,相比 Rust enum 内存减少 4 倍,速度提升 2 倍。相对引用以 1 至 4 字节偏移量存储,使数据结构具备位置无关性,可直接作为文件格式使用。
原位构建与错误处理:值在最终目的地直接构造,避免拷贝。错误处理采用 return err from load 机制,支持从多层调用栈静态返回错误,无需展开器或 Result 类型。
线程间零数据共享:工作线程编译为独立程序,通过类型化队列以 memcpy 方式传递扁平值,彻底消除数据竞争、锁及原子操作问题。
开发生态与现状
Goose 编译生成纯 C 代码,可在任何支持 C 编译器的环境中运行,并支持通过 extern fn 直接调用 C 代码。内置 TinyCC 后端支持进程内编译与运行,无需额外构建步骤。
目前,Goose 仍处于早期发展阶段,包含约三万行 C++ 代码编写的编译器、规范、标准库及测试套件。项目由 Wouter van Oortmerssen 设计,并借助 AI 工具 Claude Fable 辅助实现编译器代码。开发者指出,虽然设计源自人类,但大量细节完善与代码生成由 AI 完成,旨在探索 AI 在编译器开发中的潜力。
该项目遵循 Apache License 2.0 协议,已在 Windows、macOS 和 Linux 平台上通过测试。现阶段故意排除了可调整大小值的移动、结构体中多个可调整大小值等特性,相关待办事项已在规范附录中列出。