Zirric

Zirric

Explicit structure.

Zirric is a compact language that favors declarations, readable data modeling, and attributes that describe capabilities without interfaces.

Get Started
Browse Proposals
attr Countable {
	length(value: @Countable) -> Int
}

@Countable(fn(v) { return v.length })
data Bag {
	items
	length
}

fn summarize(bag: Bag) -> Result {
	const length = Countable(bag).length(bag)

	return if length > 0 {
		Ok(length)
	} else {
		Err("empty")
	}
}
Declarations first

Small set of primitives: const, var, fn, data, union, attr, mod, import.

Expression-oriented

if and for return values when you need them, so data flow stays explicit.

Attributes over interfaces

Capabilities are declared, composed, and exposed to tooling.

Readable data types

Records and tagged unions stay close to the domain and are easy to reason about.