Nocter v0.19.0 Release Notes
Download nocter-v0.19.0-arm64-darwin.tar.gz
Nocter v0.19.0 adds the standard-library foundation needed for practical streaming command-line applications: fallible directory traversal, buffered UTF-8 line input, in-place collection ordering, and a complete recursive text-search package. The only implemented host and native target remains arm64-darwin.
Directory Traversal
std/fs.read_dir returns an owning ReadDir. Each next operation distinguishes one entry, clean end of stream, and a recoverable traversal failure. DirEntry exposes an owned UTF-8 filename, joined Utf8Path, and regular-file, directory, symlink, or other classification.
Directory streams close on explicit close, clean end, failure, or drop. Dot entries are omitted, symbolic links are classified without being followed, malformed native records are rejected, and invalid entry encoding reports a stable public error.
Streaming Text Input
BufReader.read_line returns one owned String, while read_line_into reuses caller-provided storage. Both handle LF, CRLF, empty lines, refill boundaries, a final unterminated line, and UTF-8 scalars split across reads. They retain unread buffer bytes and at most one current line instead of the complete file.
EOF and explicit close are terminal. Read, UTF-8, and allocation failures also terminate the buffered reader so a later call cannot repeat a partially consumed operation.
Collection Ordering
Readwrite slices provide allocation-free in-place sort under the declared strict < contract. It uses constant auxiliary storage, has O(n log n) worst-case comparisons and moves, supports move-only elements, and deliberately does not promise stable ordering. Vec<T> uses the same implementation through its existing readwrite slice coercion.
Recursive Text Search Example
examples/text-search recursively searches regular UTF-8 files using only public APIs. It skips symbolic links, closes each directory stream before descending, streams one file at a time, sorts relative paths for deterministic output, buffers stdout, and reports recoverable failures on stderr. Its output is relative/path:line:text, with one-based line numbers.
Standard-Library Stabilization
String and Vec now use shared checked geometric capacity growth. Vec supports zero-sized elements, owned and borrowed text splitting share one boundary iterator, exact-size adapters claim only representable counts, and RawBuffer destruction is the sole individual allocation-release authority. File and buffered-writer closure now have explicit terminal states.
Standard-library architecture tests require reviewed module dependencies to exactly match the resolved graph and reject unreferenced private implementation functions through semantic identity.
Compatibility
v0.19.0 adds public APIs without changing Nocter source syntax or ABI. It does not add another native target, asynchronous I/O, non-UTF-8 paths, stable sorting, memory-mapped files, or dynamic interface values.
Qualified Candidate
The v0.19.0 candidate was qualified from commit 3b510875b086513c5fdcde970628267630d7f5d0. Two independent optimized builds produced byte-identical archives and installed homes. The ARM64 Darwin archive is 7,501,861 bytes with SHA-256 91ca191bad08223fa394cce9962466089d5ad003bda0cf6c07664eb4f81aa169.
Two clean locked workspace test runs each reported 1,358 passed, zero failed, and one ignored. Warnings-denied Clippy, formatting, manifest validation, documentation generation, public-HTTPS dependency acquisition, deterministic packaging, fresh-install CLI, native execution, standard-library, and LSP checks passed.