Nocter v0.6.0
Nocter v0.6.0 Release Notes
Nocter v0.6.0 makes callable allocation and storage-origin contracts explicit, checkable, and
consistent across source, generic APIs, the standard library, and editor tooling. It distinguishes
storage newly allocated into a result from storage retained from an existing value without
exposing the compiler's ambient allocation context as source syntax.
Download nocter-v0.6.0-arm64-darwin.tar.gz
Result Contracts
alloc describes newly allocated storage retained by a result. from independently describes an
existing receiver, parameter, allocator, or static origin retained by that result:
func len(text: &str): usize
alloc func copy(text: &str): String
func view(text: &String): &str from text
alloc func copy_with(allocator: &+Allocator, text: &str): String from allocator
Temporary allocation does not require alloc when no allocated storage survives in the result.
Conversely, absence of alloc is not an execution-time allocation guarantee. noalloc and
realtime are reserved for future independent contracts.
The compiler validates body-backed contracts from returned values rather than trusting their
written modifiers. Recursive calls, optional and fallible branches, aggregate fields, closures,
generic specialization, interface defaults, mutable owners, and ownership transfer preserve the
same allocation and origin facts.
Standard Library and Iteration
- Every callable in all 23 distributed standard-library modules participates in one automated
contract audit. String,Vec<T>, process, I/O, typed-literal, iterator, and allocator APIs use canonical
allocandfromcontracts.- Generic iterator advancement retains allocation and source-origin upper bounds through adapters,
callbacks, collectionfor, and consuming ownership transfer. - Empty collection storage remains neutral until first growth selects an allocation domain.
Editor and Diagnostics
Hover, completion, signature help, construction surfaces, diagnostics, and code actions render one
normalized source declaration. They no longer display compiler-only phrases such as inferred
storage origins or execution allocation effects. A missing alloc contract identifies a concrete
returned expression or call and edits only its owning declaration.
Source Changes
The removed from current spelling has no compatibility parser. Use alloc when a result may
retain newly allocated storage, and add from name only when it also retains storage from a named
receiver, parameter, allocator, or static origin.
Qualification
The release passes 2,277 compiler-library tests, 296 build tests, 449 run tests, 24 framed LSP
tests, 18 package tests, 11 native-test tests, 208 distributed-home tests, public examples, the
source corpus, formatting, and warnings-denied Clippy. The optimized archive passes doctor and a
fresh package's locked/offline check, native test, graph, run, explicit build, and direct Mach-O
execution without repository configuration.
Explicit Limits
The supported host and target remain arm64-darwin. noalloc, realtime, source-level lifetime
parameters, runtime interface dispatch, async, concurrency, registries, workspace membership, and
a stable cross-version ABI are not part of v0.6.0.