Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

Nocter v0.71.0 Release Notes

Nocter v0.71.0 makes immediate execution guarantees consistent across declarations, callable values, generic operations, standard-library code, diagnostics, and editor presentation. It introduces the proved notrap contract and lets generic code retain noalloc notrap requirements for operators, borrow coercions, and expansion.

This release includes the completed v0.69.0 and v0.70.0 development milestones. Those milestones do not have separate public archives.

Canonical Callable Contracts

One language-owned modifier vocabulary now defines spelling, canonical order, syntax-category admission, and context-independent compatibility. Functions, construction functions, interface methods, inherent methods, primitive functions, structural callable types, formatter output, hover, signature help, and completion no longer maintain declaration-specific modifier rules.

Declaration lowering projects accepted syntax once into CallableGuarantees and the independent execution form. Callable conversion and interface satisfaction use the same directional weakening relation: a stronger guarantee may be forgotten, but an unproved guarantee is never synthesized.

Trap-Free Immediate Execution

The new notrap modifier promises that immediate execution cannot reach a Nocter safety trap. Its transitive proof covers direct trap operations, checked integer arithmetic and shifts, bounds-checked indexing, forced outcome unwrapping, selected calls and callbacks, closures, implicit operations, primitives, and destruction. Recoverable T! failure remains permitted; explicit process exit and abort remain termination rather than safety traps.

Primitive declarations may claim notrap only when their compiler-owned runtime role proves it. Diagnostics retain the checked operation that violates a contract, while hover and completion present only authored source guarantees. Asynchronous producers cannot claim notrap because future T does not yet retain a drive-time trap contract.

Guaranteed Structural Operations

Generic equality, ordering, indexing, borrow coercion, and expansion requirements may carry noalloc, notrap, or canonical noalloc notrap prefixes. Duplicate requirements combine their independent guarantees without making declaration order authoritative. Concrete specialization proves the selected operation and every implicit coercion against the requested contract; generic body execution consumes the normalized capability evidence without redispatching.

String and Vec borrow coercions and borrowed Vec expansion publish guarantees proven by their complete primitive paths. Bounds-checked indexing remains potentially trapping unless its operation contract proves otherwise.

Checked Integer Arithmetic

Every built-in integer type now provides noalloc notrap checked addition, subtraction, and multiplication. These operations return absence instead of trapping on overflow or underflow. u64 and i64 own the core arithmetic implementations; narrower and target-width integers widen, reuse those authorities, validate the destination range, and narrow.

Standard-library capacity, offset, duration, codec, collection, process, storage, and text code now uses the type-owned checked operations instead of a package-private capacity-arithmetic layer.

Correctness and Compatibility

Method selection now distinguishes physical storage ownership from the ability to supply an owned receiver value. A copyable place reached through a borrow may satisfy a value-receiver method by checked copy, while a move-only borrowed place remains rejected. Checking, incomplete-source recovery, member completion, and receiver materialization share that fact.

Existing valid v0.68.0 source remains valid. The release adds contracts and diagnostics without introducing compatibility aliases, legacy spellings, unchecked indexing, value-sensitive overflow proofs, asynchronous trap guarantees, realtime, or another native target.

Release Qualification

Release-content commit 6a253b20998febfd7f614fc90dc39e878063b960 passed the complete compiler, native, LSP, documentation, example, installed-home, deterministic packaging, and artifact-integrity gates. Two independent optimized package builds produced byte-identical archives and recursively identical installed homes.

The qualified nocter-v0.71.0-arm64-darwin.tar.gz archive is 9,582,449 bytes with SHA-256 b71b8adebc9d4bd2cfe8383d47e62a058b9f1bac1a71131d6407acac435754f8. Publication reuses this exact retained archive without rebuilding it.