Dodo is a compiled systems language: you write .dodo source files, and the
compiler turns them into native programs. It checks types and borrowing before
your program runs. Memory ownership is explicit, resources are released when
their owners leave scope, and ordinary generated code needs no garbage collector
or scheduler.
You can begin with small terminal programs and fixed arrays. You do not need to understand raw pointers, allocators, or hardware to get started.
Start here
- Install Dodo. Set up the compiler and linker for your system.
- Write your first program. Print a message, change it, check it, and keep an executable.
- Learn variables and expressions. Work with values, numbers, strings, and arrays.
- Define types and functions. Break a program into named operations and model data with structs and enums.
- Make decisions and repeat work. Use
if, loops, andmatch. - Understand ownership and handle errors. Learn why values move, when references are valid, and how Results work.
- Reuse code with generics, split a project into packages, and write tests.
The chapters include complete examples you can save and run. A Try it exercise asks you to change working code; reference pages then explain the exact rules. If a term is unfamiliar, use the glossary.
Choose a path
| You want to… | Go to |
|---|---|
| Learn from the beginning | Your first program, then language basics |
| Build a small program using several features | Build a temperature report |
| Check, format, test, or debug code | Command line, testing, editor setup |
| Understand a compiler error | Diagnostics and common mistakes |
| Find a library for a task | Standard library |
| Look up a function, type, field, or method | API reference, all packages |
| Check an exact language rule | Syntax, ownership, language specification |
| Work on the compiler or documentation | Build from source, edit these docs |
What you can build
The standard library includes portable byte and UTF-8 text processing, JSON, collections, mathematics, hashing, time values, and protocol engines. Hosted adapters add console I/O, files, environment variables, processes, threads, synchronization, sockets, TLS, HTTP clients, and web servers.
Start with console output, text, and collections. For an application, follow reading files, JSON, or web routing. Each guide introduces storage and failure handling before its detailed contracts. The package inventory distinguishes portable code from APIs that require a supported operating system.
Which version these docs describe
The compiler release is 0.1.4 and the language design is Dodo 0.1. This
website follows the repository’s main branch, which may contain changes after
that release. The library is embedded in your compiler; check dodo --version
when an example uses an API your binary does not recognize.
The tutorials and guides describe implemented behavior. The language specification also defines design requirements; implementation decisions and limits records the supported subset and differences. For an exact release, use its tagged source and release notes.
How to use the examples
A complete example includes package, imports if needed, and either main or
named tests. Save each standalone program in its own file or fresh project
folder. Run the command shown beside it. Smaller snippets illustrate one rule
and may need surrounding code; deliberately invalid examples are labeled.
Fences marked dodo test are executable documentation. From a compiler checkout,
dodo test docs --doc checks them. File, network, and device examples explain
any extra setup instead of assuming an external service is available.
Use Ctrl+K or Cmd+K to search pages and API declarations. The sidebar separates the learning sequence, practical tooling, language reference, library guides, and exact API declarations.
Read offline
The Markdown guides live in docs/src/content/docs. Download the language specification as plain text or PDF. Both are generated from the same canonical Markdown. A local site build also creates the full searchable library reference from the bundled sources.