Open Manual

Changelog

Nytrix uses dated milestones. Use ny --version for snapshots.

[0.9] - 2026-07-21 → 2026-08-21 - Language security, native tooling, and runtime reliability

Added

unions, packed structs, bitfields, extended numeric types, function pointers,

typedefs, macros, and variadics.

bounded tables, and parser cleanup.

remapping through mprotect, clone, fork, and vfork.

assertions with source expressions and file:line:col diagnostics.

underlines.

heap initialization.

modular operations, conversion, and number-theory helpers.

solving, and string analysis.

Changed

runtime/static counters, and enforceable benchmark budgets.

reports alias-uncertain raw-memory/unknown-call sites, and the canonical bench

runner can enforce zero-capable allocation/helper/bounds/indirect/effect/alias/

spill/reload limits. Linux benchmark reports can optionally collect perf stat

cycles/instructions/branch/cache counters outside timed samples.

count, and largest specialized function, with benchmark metadata budgets for

both module-wide and per-specialization code size. Bounds-check elimination

also removes identical checks when an earlier identical SSA check dominates

the later one.

dynamic/tag/boxing/allocation/helper/bounds/effect/vectorization/regalloc

counters, per-function emitted code bytes, explicit monomorphized

specialization byte attribution, and matching per-function/hot-loop regalloc

telemetry on x86-64 and AArch64.

caller-local slots when safe, applies immediate SCCP/CFG/DCE cleanup, gives

bounded static loop-depth benefit credit, and traces detailed accept/reject

profitability reasons. Monomorphization tracing now also explains recursion,

unsupported-shape, body-cost, cap, keyword/list-only, and missing-fact

rejections.

and compiler peak RSS using a report-only compile outside timed samples. Bench

fixtures can enforce compile-time, code-size, peak-RSS, native/C, and

native/LLVM budgets; CSV/JSON/Markdown preserve the measured diagnostics and

budget state.

compare eligible vector widths, use retained range bounds in profitability,

and emit deterministic rejection reasons for retained scalar loops.

measurements, capture host/toolchain/revision metadata, enforce optional

per-fixture native/C and native/LLVM ratio budgets, and highlight the largest

backend gaps while keeping correctness smoke runs separate from performance

samples.

cycles instead of relying on instruction count plus an arbitrary pass count.

cost, a guarded variable-trip vector bound, and scalar cleanup tails; the x86

backend already folds encodable constants into immediate forms instead of

materializing them when the consumer permits it.

GPR, FPR, and vector classes separately; x86-64 tier reports attach those

metrics to individual functions, and verifier diagnostics include CFG block

identifiers when available.

lock entries continue to retain resolved commits.

checkboxes into the performance guide.

publication and invalidate prior cache protocols, preventing repeated

Invalid record failures after a cache hit.

ny-test fixtures: etc/tests/errors/args/ asserts invalid flag values fail

with their diagnostic, and etc/tests/runtime/args/ asserts valid

performance/runtime flag combinations compile and run. Both run under

./make test.

provably-safe shifts (<<, >> with the shift count known in [0, 64)),

and ordered comparisons, in addition to add/sub/mul/div/mod. Proven-operand

expressions emit inline raw-int IR with no tag-check guard or BigInt

fallback PHI (verified: 28 bin.runtime.slow blocks to 0 for a mixed

operator function under --profile=peak).

as peak (NYTRIX_RAW_INT_EXPR_FAST and the NYTRIX_RAW_INT_EXPR_FAST_OPS

operator list, whose default now covers every supported operator kind).

staged through the previous FFI pipeline.

valid Nytrix signatures without LLVM symbol collisions.

the in-memory JIT path.

Fixed

call-argument semantics.

wrap/CFG edge cases and safe IRCE/LICM preheader motion.

stable CFG labels/PHIs, scalar-IV remapping, and no duplicate exit labels.

architecture and inline-assembly guards.

unrestricted unsafe escape hatch, and unsupported C constructs are rejected.

use std.core consumer.

portability issues in the frontend.

native/GMP bigint allocation behavior.

handling, JIT exit-code propagation, and stencil cold/warm cache detection.

[0.8] - 2026-07-13 - Native execution, proof tooling, and platform parity

Added

with _ny_top_entry, explicit Nytrix env.__MD_ITALIC_2__ namespace. Explicit aliases opt into namespacing, while existing Nytrix

declarations retain precedence.

witnesses; false or dynamic obligations fail compilation, and ordinary values

cannot satisfy proof parameters. std.math.logic adds evaluation,

simplification, certificates, bounded solvers, rewriting, and Prolog-style

unification and backtracking.

change notifications behind std.os.fs.watch, with an mtime fallback.

output, and supported file limits, including suspended Windows Job Object

startup and explicit unsupported-limit reporting.

suite timeouts, and host-aware concurrency capped at eight workers with

6 GiB reserved per worker.

Changed

result oracles, JIT loading, and proof analysis now live in focused modules.

without running it, while ordinary files and -c execute through the selected

host-native path.

immediate operands, indexes DCE label references once, and preserves floating

types across collapsed equivalence classes.

call body and frame-relative accesses in the native encoder.

benchmark and native-oracle fixtures rather than release-note timing samples.

and cache format updates reject mixed stdlib/user entries and

sanitizer-contaminated native objects.

the compiler and standard bundle.

idle CPU use and edit-to-recompile latency.

provenance sidecar before loading, so interrupted or stale cache entries

return to normal compilation instead of being trusted.

Fixed

--verify-artifact rejects stale or malformed snapshots before reuse.

:load rejects corrupted v2 images before rebuilding persistent state while

continuing to accept older source-only snapshots.

structural rankings, and duplicate detection. It ignores strings, comments,

multiline macros, control conditions, and call continuations rather than

reporting phantom C functions. ny-fmt --selftest validates that scanner

together with high-confidence language-pattern checks.

results and set() calls on dictionaries initialized as frozen {} literals,

with stable NYAUD1120 and NYAUD1119 diagnostics and practical fixes.

relocations per program bundle, so large straight-line call sites no longer

fail at the old 256-relocation transport ceiling.

(previously 64) and reject larger requests before lowering. Portable NYIP

bundles retain their separate 4,096-function NYIR VM boundary.

layouts on demand, without registering anonymous carriers as builtin scalars.

Installed system headers recover useful declarations from unsupported syntax;

project headers remain strict.

finalize before entry. Native-only link discovery also matches JIT behavior

and deduplicates source annotations.

preservation, eliminating nondeterministic native ELF results.

handling.

plain output, and valid LLDB diagnostics.

imports, trace/debug progress suppression, ELF32 return bounds, watcher

lifetime, parser recovery, and dictionary helper ambiguity.

multi-platform workflow.

[0.7] - 2026-06-30 - LLVM-free native backend and C interoperability

Added

--nyir-run, --nyir-dump-bin, and --nyir-run-bin.

with debug-scoped WASM, BPF, PowerPC, MIPS, and AVR support.

multi-function aggregation.

external linkers for supported native fixtures.

and emits frame-relative lea on x86-64/i386.

local reads observe mutations.

without poisoning fallback.

shapes instead of silently dropping them.

Nytrix iterator syntax.

[0.6] - 2026-06-30 - Fuzzing, crypto/math expansion, renderer polish

Added

string, and checksum workloads.

lattice/factorization modules.

Changed

gradient/<use> support, and terminal 256-color output.

proven-nonzero f64 division checks elided.

Fixed

[0.5] - 2026-06-05 - Editor/viewer framework

Added

hierarchy, inspector, gizmos, transform tools, and runtime bootstrap.

Changed

Fixed

[0.4] - 2026-05-30 - Ownership, typed pipeline, CLI unification

Added

lambda/nested-collection inference, and monomorphic specialization.

Changed

Fixed

[0.3] - 2026-04-13 - Graphics stack and platform expansion

Added

Changed

code they cover.

graphics workloads.

Fixed

[0.2] - 2026-03-09 - Compiler, runtime, and stdlib foundation

Added

operators, effects, and the #main { ... } entry guard.

hash/PRNG, and public-key crypto helpers.

Changed

Fixed

found by the initial test suite.

[0.1] - 2025-12-24 - Prototype bootstrap

Added

CMakeLists.txt, src/cmd/ny/main.c).