Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. The file is validated in CI with patchnotes. The line under each version header is the release's name, a place on a mountain; docs/release-names.md has the scheme.

[Unreleased]#

Added#

Changed#

Fixed#

[1.5.0] - 2026-10-04#

Everest: Base Camp — 5,364 metres on the Khumbu glacier, where the climb to the next summit is staged: one source, many platforms. Programs build for WebAssembly (wasm32-wasi) and run under Node.js's WASI, a panic unwinding as it does natively, and artifact wasm ships a library as a module with a JavaScript loader for a page or Node.js; programs build for 32-bit x86, ARMv7 and RISC-V 32, which CI runs on its machines and under QEMU, the compiler builds itself as a 32-bit program, and every release carries nx for 32-bit Windows and Linux and for ARMv7 Linux, a Raspberry Pi's 32-bit OS among them; Linux and Windows on ARM are tier 1, every suite run on GitHub's arm64 machines. @sizeOf is confirmed by the C compiler on every target, and the test harness takes --target. The seed is regenerated from the final sources.

Added#

Fixed#

[1.4.1] - 2026-09-26#

Annapurna: Ang Tharkay — the sirdar, who declined the summit and kept the camps supplied, for a patch to the supply line: when the manifest changed a dependency's tag, nx fetch went on building the old tag's code, and now it fetches the new one. The seed is regenerated from the final sources.

Fixed#

[1.4.0] - 2026-09-25#

Annapurna: the Sanctuary — the basin ringed by the peaks, where the first mountain ends: a standard library people stop supplementing. Collections (std.sort, std.heap, std.set, std.deque), std.hash and random.secure, paths, the environment and config folders, UUIDs, logging, CSV, TOML and base64; Map hashed with SipHash under a key per process and kept in the order its keys came; time zones and ISO 8601 in std.time; an HTTP client with redirects, timeouts and streaming bodies, HTTPS over the platform's own TLS or a TLS layer such as nxtls, and WebSockets, on which nexium-discord runs a Discord bot; programs run alongside and talked to while they run, with signals and exit codes by name; select over channels, atomics, and threads that end before the call does; grapheme clusters and Unicode's case mapping; property tests that shrink what they find, on the driver the fuzzer uses. The seed is regenerated from the final sources.

Added#

Changed#

Fixed#

[1.3.2] - 2026-09-25#

Annapurna: Oudot — the expedition's doctor, and a patch that keeps a program alive. On Linux and macOS, a send to a connection the other side had reset, or input written to a program that had stopped reading it, raised SIGPIPE and ended the whole program before it could see the error; and a connect that failed at once came back looking open, so its first send did the same. Both are errors a program can handle now, each with a regression test, and the seed is regenerated from the final sources.

Fixed#

[1.3.1] - 2026-09-25#

Annapurna: Couzy — the engineer of the team, and a patch of the engineer's kind: the C the compiler writes, the runtime it links, the toolchain's messages and the release build. A branch's value could be a view of a String its branch had already released, a use-after-free in code without unsafe that the view rules promise cannot happen; an empty String handed its null pointer to memcpy and memcmp; a syntax error named a byte offset, and the REPL pointed into a program the user never sees; and the Linux build needed a newer glibc than its wheel says. Each is fixed with a regression test, and the seed is regenerated from the final sources.

Fixed#

[1.3.0] - 2026-09-24#

Annapurna: North Face — the face of the first ascent, the original line followed through: the toolchain grown up. nx fix makes the checker's own edits, nx bench measures bench blocks, nx debug stops gdb or lldb at .nx lines with formatters for the language's values, --sanitize brings AddressSanitizer and UBSan to any build, if comptime builds only the branch the target picks, the language server answers from the checker when the program checks, and a large program's debug build is a C file per module, compiled again only where it changed. The view rules are errors, trait impls are held to their traits, and the checker is split by responsibility. The seed is regenerated from the final sources.

Changed#

Added#

Fixed#

[1.2.1] - 2026-09-22#

Annapurna: de Noyelle — the expedition's liaison officer, whose whole job was permits and diplomacy: this patch is the roads in. pip install nexium-lang and npm install nexium-lang are real, the extension is on Open VSX, the package is on Chocolatey and submitted to winget, every release attaches Debian and RPM packages and signed provenance for each asset, a Nix flake and a dev container open the repository anywhere, nx completions and nx man come from the compiler, the site has an API, and the Topo is a course of twenty-five exercises graded by the compiler. The workflows are pinned to commits and their tokens are read-only outside the publishing jobs. The seed is regenerated from the final sources.

Security#

Fixed#

Added#

[1.2.0] - 2026-09-21#

Annapurna: South Face — the great wall, climbed by siege in 1970: memory safety without a garbage collector. The checker knows where every view points and enforces five rules over it: a view may not be returned inside a value or into an own parameter, stored past the storage it points into, read after its container grew or its value moved, and a value made inside using arena may not leave the block; @escape(v) is the copy that may. The rules are warnings in this release and errors in 1.3, and --strict makes them errors now. They found three bugs in the compiler on their first run (a struct literal evaluating out of written order, an arena leaked by an early return, two views held by luck), all fixed. The fuzzer runs mutants in debug mode, nx says when a newer release exists, and the Windows installer's welcome page carries the topographic contours. The seed is regenerated from the final sources.

Added#

Changed#

Fixed#

[1.1.0] - 2026-09-21#

Annapurna: Dutch Rib — the 1977 route on the north face that became the everyday line because it is safer than the Sickle: the language the compiler wanted. ?. reads through an optional, let (a, b) = pair and for (k, v) in m take tuples apart, derive(Clone) gives a struct its deep copy (the compiler's own hand-written copies are gone), any value with next(self: *mut Self) -> ?T iterates, slices match by shape with [first, rest..] and whole @ pattern, guard facts flow through while and else and prove != 0, != null, s.len >= n and i < s.len, format arguments have names and a width from a value, and @alignOf, @bitCast, @min, @max and @target() arrive. Found on the way and fixed: place.? and place orelse d dropped the payload twice in a read, and a guard fact outlived the loop that changed its variable, a bounds check elided since 0.6.0. The seed is regenerated from the final sources.

Added#

Fixed#

[1.0.3] - 2026-09-20#

Annapurna: Schatz — the one who found the summit party in the crevasse the morning after: the long-hidden bugs, and then the roads in. An outside review of 1.0.1 read the code and found five bugs that had been there since their features shipped: a contained panic leaked what the call acquired, the lockfile pinned nothing, the Python wrapper dropped writes to a mutable slice, effect notes pointed at the function instead of the line, and SECURITY.md promised more than the specification did. All five are fixed here, the compile-time interpreter is freed from its 32-call limit, and the roadmap's quick wins that followed are in too: every way to install (a one-liner on each platform, pip and npm, Homebrew, Scoop, winget and Chocolatey, Docker, torrents), nx upgrade, nx install, nx layout, nx explain, the effects lockfile, code lenses with the panic proof, the REPL's line editor and one-liners, watch mode, the numbers page, and the first package from outside the tree.

Added#

Changed#

Fixed#

[1.0.2] - 2026-09-20#

Annapurna: Terray — the one who carried the frostbitten summiters down: the hotfix. The x86-64 binaries of 1.0.0 and 1.0.1 were built for the CPU of the machine that built them and crashed on any other; every build is for the architecture's baseline now, and the release refuses one that is not. With it, the fuzzer's two fixes, UTF-8 on the Windows console, and the day's documentation.

Fixed#

Added#

Fixed#

[1.0.1] - 2026-09-20#

Annapurna: Rébuffat — the guide who roped the snow-blind party together on the descent: a patch that ties the loose ends after the summit. The fixes the tutorial found, the documentation site and the Topo, and support for eleven editors; the language is the same.

Added#

Fixed#

[1.0.0] - 2026-09-20#

Annapurna: Summit — the top of the mountain the project has been on since 0.1: the language stops changing under people's feet, the compiler is written in itself, and nothing but Nexium, one C file and a runtime header is left.

Removed#

Changed#

Fixed#

[0.9.0] - 2026-09-20#

Annapurna: Summit Ridge — the last ridge, nothing left but walking up: every tool in Nexium, the shipped nx the Nexium one, a harness and a fuzzer in Nexium, the stability policy and the tiers.

Added#

Fixed#

[0.8.0] - 2026-09-20#

Annapurna: the Sickle — the exposed glacier crossing below the summit: the compiler in Nexium is the compiler, and builds from its own C with no Rust.

Changed#

Added#

Fixed#

Removed#

[0.7.0] - 2026-09-19#

Annapurna: Camp V — the last camp, at 7,400 m; the summit push starts here: the compiler builds itself.

Added#

Fixed#

[0.6.1] - 2026-09-19#

Annapurna: Lachenal — patch.

Added#

Fixed#

[0.6.0] - 2026-09-19#

Annapurna: Camp IV — the syntax settled for 1.0; the parser in Nexium.

Changed#

Added#

Fixed#

[0.5.0] - 2026-09-19#

Annapurna: Camp III — other people can build on it: packages, editors, installers.

Added#

Fixed#

[0.4.0] - 2026-09-19#

Annapurna: Camp II — the language talks to the world: sockets, HTTP, threads.

Added#

Fixed#

[0.3.0] - 2026-09-19#

Annapurna: Camp I — the first camp on the mountain: the tools' standard library.

Added#

Fixed#

[0.2.1] - 2026-09-19#

Annapurna: Herzog — patch.

Added#

Fixed#

[0.2.0] - 2026-09-19#

Annapurna: Base Camp — where the expedition is staged: the installer, the spec, the roadmap.

Added#

Changed#

Fixed#

[0.1.0] - 2026-09-18#

Annapurna: Miristi Khola — the gorge the 1950 expedition spent weeks finding a way through; the approach.

First public release.

Added#

[Unreleased]: https://github.com/Londopy/nexium/compare/v1.5.0...HEAD [1.5.0]: https://github.com/Londopy/nexium/compare/v1.4.1...v1.5.0 [1.4.1]: https://github.com/Londopy/nexium/compare/v1.4.0...v1.4.1 [1.4.0]: https://github.com/Londopy/nexium/compare/v1.3.2...v1.4.0 [1.3.2]: https://github.com/Londopy/nexium/compare/v1.3.1...v1.3.2 [1.3.1]: https://github.com/Londopy/nexium/compare/v1.3.0...v1.3.1 [1.3.0]: https://github.com/Londopy/nexium/compare/v1.2.1...v1.3.0 [1.2.1]: https://github.com/Londopy/nexium/compare/v1.2.0...v1.2.1 [1.2.0]: https://github.com/Londopy/nexium/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/Londopy/nexium/compare/v1.0.3...v1.1.0 [1.0.3]: https://github.com/Londopy/nexium/compare/v1.0.2...v1.0.3 [1.0.2]: https://github.com/Londopy/nexium/compare/v1.0.1...v1.0.2 [1.0.1]: https://github.com/Londopy/nexium/compare/v1.0.0...v1.0.1 [1.0.0]: https://github.com/Londopy/nexium/compare/v0.9.0...v1.0.0 [0.9.0]: https://github.com/Londopy/nexium/compare/v0.8.0...v0.9.0 [0.8.0]: https://github.com/Londopy/nexium/compare/v0.7.0...v0.8.0 [0.7.0]: https://github.com/Londopy/nexium/compare/v0.6.1...v0.7.0 [0.6.1]: https://github.com/Londopy/nexium/compare/v0.6.0...v0.6.1 [0.6.0]: https://github.com/Londopy/nexium/compare/v0.5.0...v0.6.0 [0.5.0]: https://github.com/Londopy/nexium/compare/v0.4.0...v0.5.0 [0.4.0]: https://github.com/Londopy/nexium/compare/v0.3.0...v0.4.0 [0.3.0]: https://github.com/Londopy/nexium/compare/v0.2.1...v0.3.0 [0.2.1]: https://github.com/Londopy/nexium/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/Londopy/nexium/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/Londopy/nexium/releases/tag/v0.1.0