Kit Updated: 2026.7.6

Back to Blog

This post covers Kit v2026.7.6. The notes below come from the release tag history and the project changelog.

Kit 2026.7.6 is a large release that sweeps across performance, correctness, and code health. The compiler and interpreter replace linear scans with comptime dispatch maps, the emitted runtime gets faster sorts and a real allocator, arithmetic is now overflow-safe end to end, and a long list of memory leaks and ownership bugs are fixed. Several oversized source files were split and duplicated logic was consolidated, and the standard library picked up new CLI, Base64/Hex, TOML, and compression helpers.

Release Snapshot

  • Release: v2026.7.6
  • Date: July 6, 2026
  • Changelog entries since v2026.7.4: 85
  • Primary areas: performance, correctness, memory safety, emitted runtime, standard library, refactoring

What Changed

Performance work runs through the whole toolchain. Builtin dispatch in the interpreter and codegen now uses comptime StaticStringMap lookups instead of long string-compare chains and linear registry scans, the type checker indexes constructor lookups and skips redundant free-var scans, and the formatter drops its O(n2) line and matching-if scans. Frontend node sizes shrank as well — Token from 48 to 32 bytes and Expr from 224 to 72 bytes — and the LSP hot paths coalesce didChange events, cache tokens and the line index, and buffer stdin.

The emitted runtime is both faster and sturdier. It now uses smp_allocator in release builds instead of the debug allocator, replaces O(n2) insertion sorts with O(n log n) sorts and O(1) StringBuilder appends, allocates runtime strings from the heap rather than a fixed 1 MiB ring pool, and runs filter predicates exactly once per element.

A broad set of correctness and memory-safety fixes landed: overflow-checked arithmetic in the bytecode VM and the emitted math wrappers, guards against float-to-int and factorial/fibonacci overflow, integer-wrap prevention in the binary deserializer, closed-form civil-date math so pre-1970 dates no longer clamp to the epoch, an end to channel operations busy-spinning at 100% CPU, single-ownership HTTP client response building, resource-pool bounds enforcement, and numerous plugged leaks across the SQL generators, LSP server, and lint config.

The standard library gained several features and cleanups: a -- end-of-options separator and short options in Cli, Result-returning Base64/Hex decode variants, typed TOML getters to match JSON, unified gzip/zlib/deflate file paths with structured error classification, and structured error codes for script and parallel failures instead of English substring matching. Large source files were split into per-command, per-ExprKind, and per-subcommand handlers, the AST became arena-owned (removing manual recursive free machinery), and duplicated Value, formatter, and diagnostic-printer logic was consolidated.

The website package docs were regenerated for this release, and the playground WASM binary was rebuilt so kit version reports 2026.7.6.

Release Highlights

Release Commits

The list below uses the v2026.7.4..v2026.7.6 changelog range, with each short SHA linked to the corresponding GitLab commit in kit-lang.