新版本 0.5.5

目前 0.5.2。產生此頁時偵測到新版本。

這次更新:

在終端機執行:

npx skills update answer-me-with-html -y

或者告訴 Agent:

更新 answer-me-with-html
查看更新內容

Generated by Answer me with HTML 0.5.2 · 2026-10-25 14:00 · ★ Star on GitHub

Goose 語言懶人包

無 heap、比 C++ 快?一次看懂設計與 HN 爭點

sourceaardappel.github.io/goose + HN item 50224100

Lead: Goose 拿掉 heap,用編譯器管理的 data stack 配連續資料,在自報數據跑贏 C++ 與 Rust。HN 肯定設計,質疑文件與數據。

A

Goose 是什麼

新系統語言,語法近 C 與 Rust,主張如下:

  • 沒有 heap allocator、GC、reference counting、destructor
  • 動態值住在編譯器管理的 data stack,scope 結束即釋放
  • 推導 reference 壽命,不寫 lifetime、不寫 unsafe
  • 編出單一 C 檔,內附 TinyCC,可即時執行
作者
Wouter van Oortmerssen(Lobster、Amiga E)
實作
約三萬行 C++,近全文 AI 協作完成
授權
Apache 2.0
狀態
新語言,CI 跑 Windows、macOS、Linux
B

記憶體模型

配置 N 個 data stack增長只推 bump pointer一次 store 即釋放巢狀 inline,無指標1、2、4 byte 相對偏移位元組即格式,讀寫免序列化程式碼編譯器data stackscope 結束連續資料窄連結檔案
C

自報效能

16 項 benchmark 幾何平均,數字來自專案方,未經第三方驗證。

對手 速度 峰值記憶體
習慣寫法 C++ 快 3.5 倍 少 1.9 倍
手工優化 C++ 快 1.2 倍 少 1.3 倍
最佳 safe Rust 快 1.1 倍 少 1.2 倍
D

速度來源

  • 免 heap 配置與逐物析構
  • 資料連續,貼合快取
  • 連結窄,enum 依 variant 定尺寸
  • 增長不搬移,reference 長期有效
  • 值在目的地直接建成,免暫存拷貝
E

代價

限制 說明
想清資料住處 擁有者與壽命不對齊就沒效
遞迴受限 跨遞迴呼叫保留可增長資料
變長陣列 可走訪,不可索引
閉包與分派 無逃逸閉包,只靠 ADT tag 分派
整體編譯 只做 whole-program 編譯
共用記憶體 執行緒不共用可變記憶體
F

HN 爭點

爭點 風向
設計有趣,連結與 inline 實用 叫好
文件像 AI 寫,只講做法不講動機 最大罵點
Rust 對照組未用 with capacity 數據存疑
Carmack 是否背書 各說各話
缺點只放教學 §18 觀感不佳
G

作者回應

作者 AMA 重點

執行緒學 Dart Isolate,各自獨立,以 memcpy 傳 flat 值。AoS 轉 SoA 目前不做。Lobster 繼續走好用路線,Goose 走極速路線。