Nocter v0.27.0 Release Notes
Download nocter-v0.27.0-arm64-darwin.tar.gz
Nocter v0.27.0 completes allocation-free lexical path inspection and explicit directory lifecycle operations. The only implemented host and native target remains arm64-darwin.
Lexical UTF-8 Path Inspection
Utf8Path now exposes borrowed lexical views without filesystem access or allocation:
use std/path.Utf8Path
let path = Utf8Path.new("reports/summary.json")?
let parent = path.parent() otherwise { return 1 }
let name = path.file_name() otherwise { return 1 }
let stem = path.file_stem() otherwise { return 1 }
let extension = path.extension() otherwise { return 1 }
parent, file_name, file_stem, extension, is_absolute, and path validation publish noalloc. Their results borrow the owned UTF-8 spelling. They recognize ASCII / and . only for lexical boundaries and do not normalize repeated separators, . components, or .. components. Empty paths, roots, dot files, trailing dots, multiple extensions, and multibyte UTF-8 names have explicitly tested behavior.
Directory Lifecycle
std/fs adds three explicit mutation operations:
use std/fs
fs.create_dir_all("workspace/cache")?
fs.create_dir("workspace/output")?
fs.remove_dir("workspace/output")?
create_dir creates exactly one directory. create_dir_all walks the authored spelling from left to right, accepts existing directories including symbolic links that resolve to directories, and rejects an empty path or a non-directory prefix. Directories created before a later failure remain visible.
remove_dir removes exactly one empty directory. It is not recursive and never follows a final symbolic link as a directory. Stable failures distinguish an existing entry, a non-directory component, and a nonempty directory. Mutating target calls are attempted once rather than retried after an interruption with ambiguous completion.
Tooling and Design Reliability
Formatter, hover, completion, contract navigation, implementation navigation, authored-standard tests, and native applications consume the same source-backed path and filesystem declarations. The standard library keeps lexical scanning, native path encoding, Darwin ABI facts, target attempts, portable policy, and stable public error construction under separate single authorities.
Qualification covers dangling symbolic links, symbolic links to directories, final-link removal, root-only creation, malformed target directory records, invalid UTF-8 entry names, and complete create/write/remove application lifecycles.
Compatibility and Non-goals
v0.27.0 adds standard-library APIs and two Darwin syscall facts without adding language syntax or changing existing source forms. It retains the v0.26.0 ownership, noalloc, module, native ABI, package-integrity, time, and distribution boundaries.
This release does not add recursive deletion, canonicalization, descriptor-relative traversal, non-UTF-8 path ownership, permissions APIs, temporary directories, wall-clock time, networking, subprocess execution, async I/O, a second target, or persistent compiler caches.
Candidate Qualification
The qualified release-content commit is ce162bebc6e407e0b5d0a38b7ca175af3051afd1. Two independent locked workspace runs each passed 1,511 tests with zero failures and one explicitly ignored network test; the network test passed when run explicitly. Warnings-denied all-target Clippy also passed in both independent targets.
Two clean optimized package builds produced the same 8,268,486-byte archive. Its SHA-256 is 977984f72474dcb06ad43170f281f24b3809c1d21050ba1a518aaac2076d6af2. A fresh extraction passed version, doctor, initialization, locked/offline package operations, every public example, deterministic graph generation, native run and build, framed LSP analysis, installed-home immutability, and compiler and standard-library tamper rejection.