▍ NEKOVA docs
NEKOVA / Docs / Reference

Changelog

The highlights of each recent release. For the complete, unabridged history, see CHANGELOG.md in the repository.

Full history
This page summarizes recent releases. Every release since the project began is documented in CHANGELOG.md on GitHub.

Unreleased — Phase 29 (2.2.0 in progress)

Sandbox resource quotas. nekova run app.nk --sandbox and run_sandboxed() now cap CPU time and memory as well as wall-clock time, with new --max-memory, --max-cpu and --max-time flags. Each run executes in its own worker process, confined by a Windows Job Object or setrlimit on Linux, and the result reports which backend enforced the limits. This also fixes three older problems: a timed-out run used to leave its thread running forever, output was buffered without a bound before being truncated, and overlapping runs shared process-wide state. sandbox_run() now forwards its limit keywords instead of ignoring them. See Sandbox for the details and what the in-language sandbox block does and does not limit.

2.1.0 — Agent System + Unified Schema

Two new soft keywords and a new call syntax, all backward compatible. schema Person: declares one type that works three ways: as an object (Person(name="Alice", age=30)), as an AI parser (think "..." as Person validates and coerces the response), and as a database table (db_create_from_schema(Person, "people")). agent "Research Assistant": with goal:, tools:, and model: fields declares an agent directly; tools: can now name your own tasks, and a schema-typed entry like calculate(CalcInput) hands the tool only the fields the schema declares instead of the agent's whole plan text. Call-site spread, f(...args), forwards a list or tuple as separate arguments, which lets one decorator wrap functions of any arity. schema and agent are soft keywords, so they remain valid variable names. Fixes: try/catch now keeps the first line of a multi-line error instead of just its hint, --self-hosted now parses schema and agent, shape accepts keyword arguments, and an agent's model: no longer leaks into the next agent's run. Tooling catches up too: VS Code now highlights schema and agent only where they begin a definition (previously schema was coloured as a keyword even as a variable, and agent never was), editor hover (on the keywords and on the names — hover Person to see its fields) and nekova help schema / agent / spread know the new syntax, $0.01 money literals are highlighted as a single token, and there are new schema and Agents pages.

2.0.0 — NEKOVA Parser in NEKOVA

Self-hosting milestone 2. NEKOVA's parser — not just its lexer — is now written in NEKOVA itself: parser.nk (~2,400 lines) covers every grammar layer, from core statements through the AI-native constructs to classes, async/await, match, and retry/observe/fallback. It's verified against the Python reference parser by diffing the two parsers' ASTs structurally on real-world input, including parser.nk parsing its own source. Run any file through it with nekova run app.nk --self-hosted, or set self_hosted_parser = true under [run] in nekova.toml. This release also cuts the self-hosted parse path's own runtime roughly in half (~16s → ~7.8s on that self-parsing benchmark) across four profiling-driven interpreter optimizations, and fixes a real code-execution vulnerability in the agent system's calculate tool, which used to call Python's eval() directly on unsanitized input — it's now a safe, whitelist-based arithmetic evaluator.

1.13.0 — AI-Native Differentiators III

Six features built specifically around AI being a first-class citizen in the language, not bolted on. think "..." as User now validates the response against the shape and automatically re-prompts on a mismatch instead of silently accepting bad data. test "label" repeat 10 times, expect at least 8 passes: is a new probabilistic test form for AI-backed behavior where a single run isn't a meaningful signal. Budgets can be dollar amounts (with budget: $0.01) as well as token counts, and using ["model-a", "model-b"] gives a model fallback chain. nekova run app.nk --record-ai cassette.json / --replay-ai gives deterministic, API-key-free replay of AI calls for testing. sandbox strict allow: [search_web]: scopes exactly which tasks a sandboxed block may call. And for chunk in think_stream("..."): is genuinely lazy streaming.

1.12.0 — Education Layer

nekova learn is a guided terminal tutorial that checks your actual code against the real interpreter, not string-matching. nekova explain file.nk walks through why an error happened in plain language. nekova translate script.py does best-effort Python-to-NEKOVA translation. nekova classroom batch-grades a folder of student submissions against a reference solution. A new nekova help <topic> glossary works both from the command line and inside the REPL, and --simple-errors strips error output down to plain sentences for a beginner audience.

1.11.0 — Developer Experience

A real Language Server Protocol implementation (nekova lsp) replaces syntax-highlighting-only support in the VS Code extension with live diagnostics, hover docs, and autocomplete — including method completion on obj. with lightweight type inference. The parser now recovers from multiple syntax errors in a single pass instead of stopping at the first. Also new: nekova fmt --diff, an interactive nekova new wizard, nekova.lock for reproducible dependencies, a --why flag that names the exact internal function that raised an error, expect_snapshot(...) for AI-output snapshot testing, and .env.example scaffolding for every project template.

1.10.0 — Documentation Website + AI-Native Differentiators II

Two phases in one release. The documentation site you're reading now shipped — 28 pages generated from plain markdown, every code example verified against the real interpreter before publishing. Alongside it: think "..." as <ShapeName> for typed AI output from a defined shape, cost/token tracking via with budget: and ai_usage(), explicit model selection with using, multi-turn converse: blocks, --debug-ai for inspecting exact prompts, a prompt-injection guard for sandbox blocks, imagine ... as file with local disk caching, and visible retry/backoff for think calls.

1.9.9 — Correctness & Trust Part 2 + Language Completeness II

Two phases shipped together in one release. On the correctness side: indentation errors now report the exact valid depths instead of guessing, and every built-in function (int(), len(), range(), and the rest) was audited so a bad argument can no longer leak a raw Python traceback. On the language side: tuple-style destructuring, keyword arguments, const bindings, spread syntax ([...a, ...b]), optional chaining (?.), enums, and a new Set type all landed.

1.9.8 — Correctness & Trust Part 1

The first dedicated bug-fix round, scoped directly from feedback on real usage rather than planned features. Recursion errors now report the actual depth reached instead of guessing "infinite recursion." Every mock AI response is tagged so it's never confused with a real model reply. "5" + 3 raises instead of silently becoming "53". Near-miss variable name suggestions were added using real string-similarity matching.

1.9.7 — NEKOVA Dark and Light Themes

Two VS Code color themes built entirely from NEKOVA's own brand palette — green, white, and grey. Red and amber are reserved exclusively for actual errors and warnings in both themes, never used decoratively.

1.9.6 — Observability + Testing + Pipe Operator

observe blocks for structured tracing, mock think as <value> for deterministic AI testing, and the |> pipe operator for chaining transformations without nested calls.

1.9.5 — Prompt Blocks + Retry/Fallback

Reusable, parameterized prompt templates, and retry/fallback for structured handling of flaky operations.

1.9.4 — Self-Hosting: The Lexer

The first piece of NEKOVA's own toolchain written in NEKOVA itself — a lexer, as the opening move toward full self-hosting.

Earlier phases

Phases 1 through 19 built the core language up from nothing: the interpreter, classes, pattern matching, the AI-native core (think, remember, recall), the package system, and the sandbox. See the full changelog for details on any of them.