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.