Nocter v0.59.0 Release Notes
Nocter v0.59.0 completes canonical variable-width integer codecs and adds allocation-free CRC-32, then composes them into an integrity-checked append-only record application. Incomplete input, numeric overflow, non-canonical representation, excessive declared size, and checksum mismatch remain distinct outcomes instead of collapsing into text-backed errors.
Typed Prefix Decoding
std/bytes.PrefixDecode<T> is the single result contract for a decoded value and consumed width, incomplete input, numeric overflow, or a non-canonical representation. Unsigned LEB128 decoding rejects unterminated, overflowing, and overlong forms before publishing a value. ZigZag signed encoding uses the same canonical unsigned representation.
Width queries and encoders share those canonical decisions. ByteCursor advances exactly the reported width only for a decoded result. ByteBuffer<N> and Vec<u8> commit a complete encoding only after capacity is available, so every incomplete, invalid, or insufficient-capacity operation preserves prior state.
Portable Signed Integer Codecs
Signed 16-, 32-, and 64-bit values now expose exact two's-complement bit conversion and fixed-width big-endian and little-endian codecs. This extends the v0.58.0 unsigned and floating-point surface without weakening lossless numeric casts or depending on host byte order.
Independent CRC-32
The new std/checksum module provides allocation-free one-shot and incremental ISO-HDLC CRC-32. Its lookup table is reproducibly derived from the published polynomial, arbitrary chunk boundaries produce the same value, observing an intermediate checksum does not consume the state, and empty input follows the standard result.
CRC-32 detects accidental corruption. It is not a cryptographic hash, authentication mechanism, or security boundary.
Integrity-Checked Binary Records
The binary-record example defines a deterministic append-only format with magic, version, one canonical ULEB128 payload length, a fixed 12-byte payload, and big-endian CRC-32. Each record is 23 bytes; the application writes and validates an exact two-record, 46-byte image.
The decoder retains every preceding complete record when the tail is truncated or corrupt. Tests cover every prefix length, invalid magic, unsupported version, non-canonical and overflowing lengths, excessive and unexpected lengths, checksum mismatch, and trailing corruption. Blocking one-byte fragments and asynchronous two-byte fragments call the same framing decoder rather than maintaining transport-specific state machines.
One Authority per Decision
std/internal/bytes owns unsigned fixed-width byte-order arithmetic. Public std/bytes owns scalar projection and variable-width representation. std/checksum owns CRC state. std/scan owns cursor position, fixed and dynamic storage own their commit boundaries, and the application owns only its record layout and damaged-tail policy.
Editor qualification uses the real application and installed standard-library sources. Hover, completion, definition, implementation, semantic highlighting, and inlay hints consume the same checked semantic contracts as compilation; no binary-record-specific editor path exists.
Compatibility and Non-goals
v0.59.0 changes no source syntax and removes no public API. Its standard-library changes are additive. Existing scalar byte codecs and network representations remain unchanged.
Compression, cryptographic hashing, message authentication, encryption, schema generation, host-endian APIs, unaligned typed views, a generic framing framework, and symbolic constant arithmetic remain outside this release.
Release Qualification
Release-content commit 1a551b8f69e041b5d9675c16d47fbdda1d93dcaf passed the complete disposable compiler gate. Two independent optimized builds produced byte-identical archives and recursively identical installed homes. The retained archive is 9,372,190 bytes with SHA-256 bbb329c6756215a0a2d04b97f971e722dbe8b528273638363d3668d77dab14f7 and contains exactly 351 standard-library files. A fresh extraction passed version and installation diagnosis, locked/offline package workflows, native build and execution, every public example, all declared binary-record tests and the exact 46-byte output, 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.