IronKernel 0.6.0 — the editor release

2026-08-23. This release turns the runtime’s own machinery outward into tooling: a language server that resolves instead of guessing, diagnostics that survive a half-typed buffer, environments you can finally see, and a persistent evaluation session. The design is recorded in ADR 0009 — editor tooling grows from the runtime outward, and every piece below is a phase of it.

A language server in the runtime

ik lsp starts a Language Server Protocol server inside the IronKernel binary — the same parser, analyzer, and bootstrapped environment your programs use. The distinction that defines Kernel finally shows up correctly in your editor: operatives and applicatives are colored by resolving the binding, not by matching a name list. Define your own operative and it gets the operative color at every use site:

semantic tokens know what twice is

(define twice (vau (x) e (eval x e) (eval x e)))
(twice (print "again"))  ; twice colors as an operative — it is one

Hover shows a combiner’s contract — (+ number number …) → number — pure, certified — completion offers what is actually in scope (your buffer’s defines included), and diagnostics arrive on every keystroke. The VS Code extension starts the server automatically in trusted workspaces; any editor that speaks LSP can do the same.

Diagnostics that recover

ik check --json emits machine-readable diagnostics with exact source spans — a versioned contract shared by the language server and anything else you build. And the reader now recovers: a broken form no longer swallows the rest of the file. Every broken region reports its own error, the forms that parse still produce trees, and the form you are actively typing is completed with its unclosed brackets so completion and highlighting keep working mid-edit.

every region, not just the first

$ ik check broken.ikr
Check error: broken.ikr:1:1: Parse error: …
Check error: broken.ikr:3:1: Parse error: …

The environment, visible

Three new applicatives — extensions alongside clr-opens, available under every profile — make environments inspectable from Kernel:

enumeration, not authority

(environment-local-symbols e)          ; the frame's own bindings, sorted
(environment-symbols e)                ; everything visible from e
(environment-capabilities e)           ; e.g. (host-io (generated-clr "safe"))

They return names and information, never parent environments as values — the environment type stays encapsulated, so visibility does not become mutation authority. On top of them: tab completion in the REPL, an environment view in VS Code (capabilities, your buffer’s frame, and every frame beneath it, contracts as tooltips), and a profile status bar that shows the active capability profile — and flags when it overrides the project’s own <IronKernelProfile>.

Sessions

ik session is a persistent evaluation session over framed JSON-RPC: definitions persist between evals, everything the program prints travels in the response, and errors are structured data — message, rendered diagnostic, and spans — instead of text folded into stdout. In VS Code, Eval Selection in Session gives you a REPL that lives inside your editing session. The debug adapter will ride this protocol; the ADR records exactly what it still needs.

Two new packages

IronKernel.Math brings statistics, combinatorics, and number theory — exact wherever the mathematics allows: means as ratios, isqrt and factorial at any size, primes and factorizations. IronKernel.Time brings dates and durations over System.DateTime/System.TimeSpan, with UTC-disciplined instants the arithmetic tower adds and subtracts directly.

One breaking change

show now renders a value to a string instead of printing it — what its name always promised. It is pure, needs no host authority, and works under every profile. Code that used bare (show x) to print should say what it means:

rendering and printing are two jobs

(show (list 1 2))          ; ⇒ "(1 2)" — a string, nothing printed
(print (show (list 1 2))) ; prints (1 2) — the idiom that used to be an arity error

Get it

Self-contained binaries for Linux, Windows, and macOS (arm64 and x64) — plus the ik tool and SDK packages — are attached to the v0.6.0 release. The VS Code extension builds on every push; grab the VSIX from CI and install it with Extensions: Install from VSIX… — see the getting-started guide for runtime discovery.

← Back to ironkernel.org