aardappel/goose
Developer ToolsA memory-safe systems language with no heap, GC or lifetime annotations, compiling to C.
Goose is a new programming language for low-level, data-heavy work: it targets C and Rust programmers who want predictable memory behaviour without a garbage collector or allocator. It is a whole-program compiler written in C++, now with a written specification, a standard library, 31 sample programs and a test suite. It is early-stage software, and the README says so plainly.
What changes in a workflow
There is no heap. Every dynamic value lives inline on compiler-assigned data stacks, growth advances a pointer, and memory is reclaimed when its scope ends. References into a grow-only array remain valid as it grows, so common vector-reallocation mistakes disappear. The compiler infers each reference's root and rejects references that could outlive their owner, so there is no lifetime syntax and no unsafe block. Data like a nested order record stays contiguous rather than becoming pointers to separate buffers, which the README says explains much of the memory and speed advantage.
The practical cost is that you must think about where data lives and how long its scope lasts. Recursive functions cannot carry growable data across a recursive call, arrays of variable-size elements can be iterated but not indexed, and there are no escaping closures, function pointers or dynamic dispatch beyond enum tags. A slot returned to a pool can still be referenced and will then read whatever its next owner stored — a logic bug, but not memory corruption. The tutorial's limitations section has the fuller list.
Goose compiles to one C file and calls C through extern fn, so it fits wherever a C toolchain exists. The bundled TinyCC backend runs a program in-process with no build step, while programs using threads and package-based graphics/audio/physics must be built into executables.
Getting it running
Prebuilt compilers exist for Windows x64, Linux x64 and macOS (Apple silicon and Intel). Running in-process needs the C library headers on Linux (libc6-dev) and the Xcode command line tools on macOS; goose build additionally needs a C compiler. The Linux compiler requires glibc 2.35+, macOS requires 13.3+, and a downloaded macOS archive must have its quarantine attribute cleared before its files will run. Building from source needs CMake 3.27+, a C++20 compiler and Python 3 for the test runners. Editor support is a VS Code extension and a language server that other editors can call.
Performance claims and their scope
The README's speed and memory figures come from the project's own suite of 16 benchmarks, measured as whole-process wall-clock time including teardown, against idiomatic C++, hand-optimized C++ and safe Rust. The project publishes the cases where Goose loses as well as the wins; treat the multipliers as benchmark-specific rather than general-purpose.
Status and licence
Goose is explicitly new. Whole-program compilation is the only mode, and the author lists moves for resizable values, more than one resizable value per struct, labeled break, namespace privacy and broader OS/library access as out of scope for now. The README states the repository was produced almost entirely with AI, with the design by Wouter van Oortmerssen. Apache-2.0 licensed.
The 2026-09-18 Hacker News thread was buried at the submitter's own request because the language was missing elements they wanted added first; readers also criticised the README's AI-generated prose.
HotRepo's take
Goose reached #1 on the weekly C++ board with +1,235 in the week recorded on 2026-10-31, but single-date samples do not show whether interest is sustained. For now, the sensible use is evaluating the language and its documented design, not production migration.
Written by AI from the project's README, updated October 31, 2026. The project's own docs are the source of truth.