Goose

Goose documentation

Goose is a memory-safe systems language with no heap allocator, garbage collector or lifetime annotations (what it is and why). This page is the map of its documentation. The language is described four times, at increasing depth, and the rest of the documents cover the library, the tools and the compiler.

The language, in reading order

Document What it is Read it when
README What Goose is and why, in one page, with the numbers. You want to know whether to look further.
Tutorial The language by example, concentrating on what is different about Goose: where values live, the array family, references that survive growth, enums in two sizes, return … from, threads. You are starting. An afternoon's read.
Language reference Every feature, topic by topic, with a compiling example for each: the whole language laid out to be read, with a pointer into the specification for every rule. You know the basics and want all of it, or want to look something up.
Specification The exact rules, in the language an implementor needs: size classes, construction, the lifetime and shrink rules, the compilation model, the representation. You want to know why something did not compile, or are writing an implementation.

Library and tools

Benchmarks

The compiler

Design notes

The reasoning behind features, kept as it was written. The specification and the reference describe what was built; these say why.

Getting the compiler

Prebuilt compilers for Windows, Linux and macOS are on the releases page; the README says what each platform needs beside them, and how to build from source. Questions and discussion: the Discord and the GitHub repository.


These pages are built from the repository's markdown by docs/site/build.py, so the same files read on GitHub and here.