Website | Source | Benchmark Dashboard
Row-polymorphic Hindley-Milner with capability-based effects (IO, FS, Net, Clock, AI). No loops, lambda calculus only. Written autonomously by AI agents.
Camp: Verification
Author: Mark Edmondson / Sunholo
Implementation language: Go
Compilation target: Native binaries, WebAssembly
Licence: Apache-2.0
First seen: September 2025
Maturity: working compiler
Agent tooling:
- SKILL.md
- AGENTS.md
- CLAUDE.md
- MCP server
- llms.txt
- Claude Code plugin
- Gemini CLI extension
- slash commands
AILANG ships a purely functional, effect-typed substrate for AI-generated code. The type system is Hindley-Milner with row polymorphism; the effect system carves authority into capability categories (IO, FS, Net, Clock, AI) that must be granted at the CLI with --caps. There are no loops — the language commits to lambda calculus, pattern matching, and ADTs as the only forms of control. The compiler itself is written autonomously by AI agents via a coordinator.
AILANG takes the verification camp's diagnosis and applies it at the layer of authority. The diagnosis is that LLMs hallucinate side effects — network calls in pure functions, filesystem writes in helpers that look read-only, model calls in code paths the operator never approved. AILANG's answer is to carve effects into capability categories — IO, FS, Net, Clock, AI — and make every one of them visible in the function's signature, row-polymorphically, with Hindley-Milner inference filling in the rest. A function that doesn't declare an effect can't perform it; a run that wasn't given a capability at the CLI can't grant it from inside.
For humans, a language is a tool for expression. For AIs, it's a substrate for reasoning.
The distinctive move is the no-loops decision. AILANG commits to lambda calculus, pattern matching, and ADTs as its only forms of control flow — no for, no while, no mutable accumulator. Where Vera tracks model calls as a single <Inference> effect, AILANG splits the world into five capability categories and refuses to let the language grow a construct that obscures any of them. The bet is that determinism, replay, and structured per-effect traces are worth giving up the loop.
module examples/helloimport std/io (println)
export func main() -> () ! {IO} {
println("Hello from AILANG!")
}
The ! {IO} after the return type is the effect row. A caller without an IO capability granted via ailang run --caps IO cannot invoke this function. Effect rows compose: a function that calls IO- and FS-effecting helpers must declare {IO, FS}.
IO, FS, Net, Clock, AI. Each is granted (or refused) separately at the CLI with --caps. The model can't widen authority from inside the program.mcp.ailang.sunholo.com ships typed tools over stdlib, examples, and benchmarks. The Claude Code plugin and Gemini CLI extension install the compiler, the prompt, and the MCP server in one command.v0.20.1 with 110 published releases on GitHub, Apache-2.0 licensed, 2,958 commits, 26 stars. The compiler is implemented in Go (85.5% of the source) and ships native binaries for macOS (Intel and Apple Silicon) and Linux plus a WebAssembly target used by nine in-browser demos. Standard library covers std/io, std/fs, std/json, std/zip, std/xml, std/crypto, std/http, std/net. The benchmark dashboard runs 33 tasks across 8 frontier models in three modes — zero-shot, self-repair, and full agentic — on every release.
The bet is that the rest of the catalogue's verification entries are designing a language a human reads and an AI writes, while AILANG is designing a language an AI both writes and maintains. The next test is whether the agent-authored development model produces a standard library deep enough to compete with MoonBit's roughly two-year head start (MoonBit launched 18 August 2023).
SKILL.md, AGENTS.md, and CLAUDE.md ship in the repository; llms.txt and llms-full.txt are served from the docs site. A remote MCP server exposes typed tools for stdlib lookup, examples, design docs, and the benchmark dashboard. The ailang_bootstrap plugin installs slash commands (/ailang:prompt, /ailang:new, /ailang:run, /ailang:challenge) into Claude Code and the equivalent extension into Gemini CLI; both download a platform-matched compiler binary on install. The CLI emits structured per-effect traces designed for the agent's next iteration to act on.
Last modified 15 June 2026