Releases: no-materials/hird
Release list
v0.1.0
The first release. The compiler pipeline works end to end: the flagship
demo — a supervised agent planner — type-checks, compiles to readable
Erlang, and runs on BEAM.
What v0.1 does
- Effect rows, checked for equality. A function's declared row
(! {Tool<CreateTicket>, Tool<Log>}) must equal exactly what its body
performs — not a superset, not a subset. Effect polymorphism is
expressed with row variables, never by subsumption. - Tool effects, audited unconditionally.
tool Name : {args} → result
declares the only I/O boundary, yielding an effect, a callable
function, and a derived invocation record. Every call is recorded on
an audit stream as one canonical JSON line — mocked and real handlers
audit identically, so dry runs and production leave the same trail. - Typed actors on OTP. An actor is a typed
gen_server: a state
type, a message sum type, and one handler per constructor, with
exhaustiveness checked and a per-handler effect row. Supervisors
declare their strategy, restart budget, and typed children. - Queryable by tooling, not just readable. Effect rows are
per-process by design, so "what does this actor do transitively" is a
tooling query rather than a type-system feature:
hird emit-effect-graphand the MCP server answer it from the IR. - LSP and MCP servers over the same compiler front end — diagnostics,
hover, and go-to-definition for editors; eight introspection tools for
LLM agents.
Known limits
The language surface is unstable and will break without deprecation
cycles. The LSP and MCP servers compile one file at a time, so use
imports do not resolve in editor and agent queries (the CLI checks a
whole directory as one program). There is no incremental compilation.
The backend emits Erlang source rather than abstract forms, and
request blocks on a fixed 5000 ms timeout. The
roadmap is
tracked in-repo.
Install
Download the archive for your platform below and extract it; each one
carries three binaries:
hird— the compiler CLI (check,build,run,emit-ast,emit-effect-graph)hird-lsp— the language server (diagnostics, hover, go-to-definition)hird-mcp— the MCP server exposing compiler introspection to LLM agents
Or build from source with Rust 1.97+:
cargo install --git https://github.com/no-materials/hird hird-cliCompiling and running Hirð programs (hird build, hird run) needs
Erlang/OTP on PATH; hird check works without it.
See the README to get started.