Build it in edda

Command-line tools

A command-line tool is the smallest honest program: it reads, it transforms, it writes, and it should be able to say exactly which of those it does. In edda the entry point's signature is that statement, and the compiler holds it true.

The signature is the manifest

A tool that filters stdin to stdout declares main(stdin: Stdin, out: Stdout) and can do nothing else — no filesystem, no network, no clock, because capabilities cannot be synthesised, only passed. Reading the one-line signature is a complete security audit of the binary's authority.

What the language gives a tool

deploy

One static binary

No interpreter, no runtime to install, no dependency at the destination. Build, copy, run.

input

Parsing under contract

Arguments and input pass through refinements at the boundary — an index proven in range, a count proven positive — so the body never re-checks what the type already guarantees.

arithmetic

No silent wraparound

Integer overflow traps unless you asked for wrapping or saturating arithmetic by name. The byte-counting bug that corrupts at 4 GiB is a crash at the fault, not garbage downstream.