The thesis.
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.
What it looks like.
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}.
Distinctive moves.
- Capability carving, not capability tracking. Effects are partitioned into
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. - No loops. Lambda calculus, recursion, and pattern matching only. The language has a dedicated “Why No Loops?” reference page; the design axioms treat the absence of mutable iteration as load-bearing for replay.
- Row-polymorphic Hindley-Milner. Effect rows are first-class type-level objects, inferred and unified the same way row-typed records are. A helper that doesn’t touch the network has a smaller row than its caller.
- Written by agents, end-to-end. The README declares the language is “written autonomously by AI agents via its own coordinator”; static-analysis and supply-chain badges (Sonar, OpenSSF Scorecard, OpenSSF Best Practices) are cited as third-party verification of the output.
- MCP-first developer surface. A hosted MCP server at
mcp.ailang.sunholo.comships 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.
Maturity.
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).
Agent tooling.
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.
- Vera verification Vera tracks LLM inference as one <Inference> effect; AILANG carves authority into IO, FS, Net, Clock, AI as separate capability categories granted per run.
- Boruna orchestration Both build capability-based effect systems; Boruna enforces declared effects at the VM, AILANG enforces them at the type system and the CLI capability flag.
- MoonBit verification Both ship effect typing on a functional core; MoonBit's effects are conventional and general-purpose, AILANG's are row-polymorphic and carved for agent-relevant authority.