Skip to content

Releases: no-materials/hird

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 14:42

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-graph and 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-cli

Compiling and running Hirð programs (hird build, hird run) needs
Erlang/OTP on PATH; hird check works without it.

See the README to get started.