Nocter v0.8.0 Release Notes
Download nocter-v0.8.0-arm64-darwin.tar.gz
Nocter v0.8.0 introduces type-owned borrow coercions. A nominal type can expose a safe borrowed view
once, and callers can use that view at a concrete expected-type boundary without repeating an
adapter method call.
Borrow Coercion Declarations
A coercion belongs to the type that owns the source representation:
coerce String {
pub &self as &str from self {
return self.view()
}
}
The receiver is explicitly readonly or readwrite, the target is borrowed, and from self states
that the result remains attached to the caller's source loan. Entries are private unless marked
pub; only the module defining the source nominal type may declare them.
The standard library supplies readonly String to str, readonly Vec<T> to [T], and readwrite
Vec<T> to readwrite [T] coercions. Existing view and view_mut methods remain available.
Contextual and Explicit Selection
The caller always writes the source borrow. A concrete argument, binding, assignment, aggregate
field, sequence element, enum payload, or return boundary may select one matching entry:
let text = String "Nocter"
let length = measure(&text)
The existing as expression can select the same entry explicitly:
let view = &text as &str
Prefix borrowing binds before as. Coercion never inserts a borrow, consumes an owned value,
chains entries, or participates in unconstrained generic inference and overload ranking. Existing
lossless integer as conversions keep their behavior.
Ownership and Execution
Type checking records one immutable conversion plan with concrete source and target types,
declaration identity, capability, generic substitution, and source ranges. Ownership, provenance,
region checking, editor analysis, specialization, and native lowering consume that plan rather than
repeat selection.
The selected body is an ordinary statically resolved call. Its source expression is evaluated once,
and the result keeps every possible source loan through grouped, projected, and branch-producing
expressions until its last use.
Editor Support
Hover on an explicit as covers only that operator and describes the normalized concrete
conversion. Definition follows a selected local, imported, or publicly re-exported coercion to its
declaration. Numeric as has conversion hover without an invented definition target. Private and
incomplete source remains diagnostic and does not produce stale navigation.
Compatibility and Limits
v0.8.0 is source-compatible with v0.7.0 programs. No existing view method is removed, and there is
no automatic source rewrite.
This release does not add owned, fallible, optional, allocation-backed, or transitive coercions;
implicit borrowing or moving; coercion-driven member lookup, generic inference, or overload
ranking; public lifetime parameters; runtime dispatch; additional targets; or a stable cross-version
ABI. The supported host and target remain arm64-darwin.
Qualification
The v0.8.0 candidate passed clean and incremental complete repository verification, with 3,345 tests
per run plus formatting, documentation generation, and warnings-denied Clippy. The exact
arm64-darwin archive is 3,319,650 bytes with SHA-256
cb6f0ce6b81e1aa71a65797e21f9f1d05a4164a17cf76427f34955966a63298a. A fresh extraction
without environment configuration passed package creation, locked/offline check and native test,
deterministic graph generation, run, explicit build, direct Mach-O execution, and the LSP lifecycle.