Skip to content

alice-does-coding/urchin-lang

Repository files navigation

Urchin logo

Urchin

A programming language. Facets, schemes, and IO are the three compositional units.

It's very early — single-author, the spec is a living draft, and only a slice of the language runs end-to-end so far. Anything in here can change.

Try it

Requires Rust with edition 2024 support.

cargo run -p urchin-cli -- run examples/agent.urchin --ticks 5 \
  | cargo run -p urchin-cli -- watch

Or install the binary once and shorten the call:

cargo install --path crates/cli
urchin run examples/agent.urchin --ticks 5 | urchin watch

urchin run emits one NDJSON event per line; urchin watch is a small pretty-printer on top.

What a file looks like

io clock {
  /// _events
  tick(at: timestamp)

  /// _config
  rate = 60
}

facet photographer {
  /// _state
  shotsTaken = 0

  /// _handlers
  on tick -> int {
    shotsTaken = shotsTaken ~> shotsTaken + 1
    shotsTaken
  }
}

examples/agent.urchin is the canonical seed example; the others in examples/ are sketches.

Workspace

  • crates/parser — lexer + parser, produces the AST
  • crates/types — type representations (stub)
  • crates/runtime — interpreter, emits an NDJSON event stream
  • crates/cli — the urchin binary: parse, format, check, run, watch

Where to read more

  • SPEC.md — the language spec. Authoritative; sections are marked draft / sketch / TBD.
  • DIRECTION.md — the vision document. Predates the May 2026 rename from role/actor/comms to facet/scheme/io; kept for context but the spec wins where they conflict.
  • TODO.md — near-term punch list.

License

MIT. © 2026 Alice Ott.

About

Early-stage programming language. Facets compose into schemes; IO is the boundary.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages