Programming Language

Nocter

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

/releases/v0.58.0.md

Nocter v0.58.0 Release Notes

Nocter v0.58.0 adds one allocation-free binary scalar foundation and composes it with the existing cursor, fixed-capacity storage, dynamic collection, and stream contracts. Binary formats can now share explicit portable byte order without introducing another parser or I/O model.

Portable Scalar Byte Codecs

The new std/bytes module decodes and encodes unsigned 16-, 32-, and 64-bit integers in explicit big-endian and little-endian order. It also supports IEEE binary32 and binary64 values through their exact bit representations, preserving signed zero, infinities, and NaN payloads.

Decoding returns none before producing a value when the input prefix is too short. Encoding checks the complete output width before its first write, so insufficient capacity returns false with every byte unchanged. These operations allocate no storage and do not depend on native host byte order.

Cursor and Storage Composition

scan.ByteCursor gains fixed-width scalar methods that advance only after successful decoding. A short input therefore leaves the cursor at its original offset. This extends the existing borrowed cursor instead of adding a second binary reader representation.

fixed.ByteBuffer<N> gains transactional scalar append methods. Each method encodes into initialized spare bytes and commits the exact width only after complete success. Vec<T> gains extend_from_slice and its recoverable counterpart, reserving the complete additional capacity before copying any element.

Blocking and asynchronous writers continue to accept ordinary byte slices. Both paths consume the same canonical bytes produced by std/bytes and ByteBuffer<N>; neither stream interface owns a second endian conversion or framing rule.

Practical Binary Record

The new binary-record example writes and reads an exact 18-byte portable file record containing a magic value, version, item count, and floating-point measurement. It demonstrates mixed byte orders, allocation-free bounded encoding, borrowed cursor decoding, filesystem transport, and recoverable application errors.

Its tests cover exact field and floating-bit round trips, truncated input, invalid magic, trailing bytes, and fixed-buffer capacity exhaustion. Repository qualification fixes the complete wire image as an observable process contract, so unintended field-order or endian changes fail the public example gate.

One Byte-Order Authority

The standard library now centralizes its integer byte-order arithmetic in std/internal/bytes. Public codecs, network addresses, socket hashing, IPv6 parsing, and the Darwin network adapter all consume that package contract. Cursor position, bounded commit, dynamic growth, and external I/O remain separate responsibilities with no source-level layout reinterpretation or host-endian cast.

Installed-editor qualification covers both the public codec declarations and their public and package-private implementation sources. Hover, completion, navigation, semantic highlighting, diagnostics, edit recovery, and source formatting continue to use the same checked program model.

Compatibility and Non-goals

v0.58.0 changes no existing source syntax and removes no public API. Existing network behavior and wire representations are preserved while their byte-order implementation becomes shared.

Signed integer bit-pattern conversion, variable-length integers, checksums, compression, cryptography, schema generation, host-endian APIs, unaligned typed views, and symbolic constant arithmetic remain outside this release. Protocol-specific framing continues to belong to each protocol module rather than std/bytes.

Release Qualification

Release-content commit 7ee9b8701852483547563660e14b74165d722bc6 passed the complete disposable compiler gate. Two independent optimized builds produced byte-identical archives and recursively identical installed homes. The retained archive is 9,360,206 bytes with SHA-256 332018f053c18d07d696ce34476c9b68d64c74bffbf53ca2f61ad7c1297de2eb and contains exactly 343 standard-library files. A fresh extraction passed version and installation diagnosis, locked/offline package workflows, native build and execution, every public example, interactive LSP analysis and edit recovery, immutability checks, and compiler and standard-library tamper rejection. Publication must reuse this exact retained archive without rebuilding it.