The main source repository for the Rust programming language, containing the compiler, standard library, and documentation.
aardappel/goose
A experimental systems programming language with no heap allocator or garbage collector, using compiler-managed data stacks for memory safety.
- Stars
- 3,146
- Forks
- 132
- Open issues
- 48
- Last commit
- 2 days ago
What is it?
Goose is a programming language with C- and Rust-like syntax that has no heap. Every dynamic value lives inline on data stacks that the compiler manages statically: growth advances a pointer, and memory is freed when its scope ends. There is no allocator, garbage collector, reference counting, destructors, lifetime annotations, or unsafe block.
The language provides grow-only and grow-shrink arrays whose references stay valid as they grow, relative references stored as 1, 2 or 4-byte offsets, and enums that can be stored at the size of each variant. Threads run as separate programs with their own memory and exchange flat values through typed queues. The compiler emits one C file and can call C directly through extern fn, with a bundled TinyCC backend that runs programs in-process.
The project includes a tutorial, language reference and specification, a standard library covering graphics, physics and UI modules, thirty-one sample programs, and benchmarks against C++ and Rust. The project's author notes that the repository was produced largely with AI assistance from a human-written language design.
Key features
- 01Memory managed by compiler-assigned data stacks, with no heap allocation or GC.
- 02Grow-only arrays where references remain valid after growth.
- 03Relative references stored as 1, 2 or 4-byte offsets, enabling position-independent data.
- 04Variable-size enums and inline nested data with no pointers.
- 05Threads with separate memory, communicating via typed queues.
- 06Direct calls to C through extern fn, and compilation to a single C file.
Use cases
- Exploring memory models for systems code without a garbage collector or manual frees.
- Writing data-heavy programs such as parsers or graph structures that benefit from inline layout.
- Studying a language whose compiler and docs were built largely with AI assistance.
- Building small graphics or physics programs using the bundled gfx and physics modules.
Things to know
- The metadata describes the language as experimental, so expect changes.
- Arrays of variable-size elements can be iterated but not indexed directly.
- The README gives no install or run commands in the visible text, so setup steps are not listed here.
In collections
Topics
FAQ
- What is goose?
- A experimental systems programming language with no heap allocator or garbage collector, using compiler-managed data stacks for memory safety. Goose is a programming language with C- and Rust-like syntax that has no heap. Every dynamic value lives inline on data stacks that the compiler manages statically: growth advances a pointer, and memory is freed when its scope ends. There is no allocator, garbage collector, reference counting, destructors, lifetime annotations, or unsafe block.
- Is goose free to use? What license does it have?
- goose is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is goose still maintained?
- Actively maintained. The last commit to goose was on Nov 6, 2026.
- What can I use goose for?
- Exploring memory models for systems code without a garbage collector or manual frees. Writing data-heavy programs such as parsers or graph structures that benefit from inline layout. Studying a language whose compiler and docs were built largely with AI assistance. Building small graphics or physics programs using the bundled gfx and physics modules.
- Where can I get goose?
- The source code and installation instructions are on GitHub: https://github.com/aardappel/goose
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
The Swift programming language and its compiler toolchain, a memory-safe, high-performance language with seamless access to C and Objective-C.
A simple, fast, compiled programming language for maintainable software, with zero library dependencies and automatic C-to-V translation.
Odin is a general-purpose, data-oriented systems programming language positioned as a C alternative, with a built-in standard library.
A memory-safe implementation of C and C++ that compiles existing code with few or no changes and turns memory errors into panics.
The Go programming language, an open source language for building simple, reliable, and efficient software.