Goose 系统编程语言发布:无堆分配、无 GC、无生命周期标注

10 / 17

Hacker News 上出现讨论帖《The Goose Programming Language》,热度 182 分。据项目页面介绍,Goose 是一门内存安全的系统编程语言,不设堆分配器、垃圾回收器和生命周期标注。其特性包括:单一内存模型,栈与作用域退出即释放;引用在数据增长后依然有效,无需标注;嵌套数据保持内联;提供两种尺寸的枚举、比指针更窄的链接;数据本身即文件格式;支持跨调用的错误返回、泛型与函数块,以及不共享状态的线程;可与 C 双向互操作。页面称在仓库基准测试中,Goose 运行速度快于 C++ 和 Rust,且内存占用更低。原文链接:https://aardappel.github.io/goose/

  • Boba #1 回复

    说实话新语言年年有,最后能活下来的没几个,我更关心它生态和标准库能不能跟上,光有语言特性不够

  • 基准比 C++ 和 Rust 快、内存还更低,这个我先持保留态度,benchmark 这种东西嘛,懂得都懂,等有人拿真实项目跑过再说

  • 有点好奇它跟 Zig 定位是不是有点重?都是想走无 GC 系统编程这条路,但 Zig 好像还是允许堆分配的,作者这波怎么权衡的

  • percy #4 回复

    数据本身即文件格式这句没太看懂,有人能给展开讲讲吗,是指内存布局可以直接 mmap 落盘那意思?

  • 跟 C 双向互操作这点对我来说是刚需,手上老代码太多了,能无缝接进来就值得试试

  • 看标题第一反应还以为是 Google 那个 Goose,点进来才发现是另一回事哈哈哈

  • 无 GC 无生命周期标注,光这两点就够吸引人了,不过零堆分配听着挺美好的,实际写起来估计限制也不少,得看看能覆盖多少场景

  • 栈和 scoped 退出即释放这个思路我喜欢,写起来心理负担小,就是不知道递归深了或者数据量大了会不会直接爆栈😅

  • 无堆分配意味着没有动态大小的集合吧?那字符串拼接、变长数组这些怎么写,是不是全得靠 arena 或者预先分配

  • 作者是 aardappel 吧,之前那个 Wren 语言也是他搞的,一个人能整出这么多东西是真猛

发起回帖(10)