Nomo

DOCUMENTATION / EARLY PREVIEW

Start with Nomo

Nomo is still an early preview. These notes cover the currently verified preview workflow and link to the specifications that are still evolving.

Quick start

Download the matching preview archive, put nomo on your PATH, and verify the toolchain:

nomo --version
nomo new hello-world
cd hello-world

Create a program

The scaffold derives the source module root from [package].name: hello-world becomes hello_world in src/main.nomo. A void-returning main omits the return arrow:

package hello_world

import std.io

fn main() {
    io.println("Hello, Nomo")
}

Check and run

Use the same CLI for formatting, diagnostics, native builds, and execution:

nomo fmt .
nomo check .
nomo build .
nomo run .

Language foundations

Nomo favors immutable values, explicit mutation, Result-based failure, no null, and no exceptions. The compiler emits C99 before the platform linker runs.

Packages and workspaces

nomo.toml is the project contract. Source module roots come only from [package].name converted to lower_snake_case; namespaces, canonical owner/package identities, and dependency aliases do not appear in the package declaration. See RFC 0021 for the migration window.

Where to go next

Use the language repository for implementation details, the RFC index for design decisions, and the playground for an install-free syntax tour.

enzh