Nocter v0.18.0 Release Notes
Download nocter-v0.18.0-arm64-darwin.tar.gz
Nocter v0.18.0 makes type construction, builtin declarations, generic requirements, and interface implementation more direct. It also replaces rollback-oriented compiler mutation with immutable semantic generations, improving editor recovery without changing runtime representation or ABI.
The only implemented host and native target remains arm64-darwin.
Construction Surfaces
construct no longer has a default member. Structural Type { ... } construction is governed only by representation and field visibility. Named factories and typed literals remain explicit members:
construct String {
pub literal ""(text: &str): Self
pub func empty(): Self
}
An empty construct declaration is invalid. Hover on a nominal type presents that type rather than appending a synthesized list of construction members; each factory or literal has its own ordinary source-backed hover and navigation identity.
Source-Declared Builtins and Primitives
Named compiler-represented types now have ordinary declarations in the standard library:
pub primitive type str
primitive func str_len_raw(text: &str): usize
The compiler resolves each builtin declaration once from the selected toolchain package. Type checking, inherent methods, completion, hover, and navigation consume that same identity instead of recovering builtin ownership from a spelling or module path. Primitive functions use the same modifier order as ordinary functions.
Interface Implementation and Generic Requirements
instance is now the sole owner of behavior attached to an existing type. The standalone conform declaration has been removed. A bodyless impl member records interface implementation and its associated-type bindings:
instance ValuesIter<T> {
impl Iterator { .Item = T }
method &+self.next(): T? {
// ...
}
}
Generic angle brackets contain generic arguments only. Associated bindings use braces and a leading dot. Interface requirements use impl, while callable values remain ordinary callable types:
func consume<T>(value: T): void where T impl Iterator { .Item = &str }
let callback: func(i32): String
Each checked interface implementation freezes its required methods to exact inherent callables. Selection does not depend on source order, instance-fragment order, or declaration order.
Compiler and Editor Reliability
Compiler semantic state is now immutable between accepted generations. Type interning, copyability, and closure construction use explicit branch-local transactions: success commits a new authority, while failure discards the branch or retains an isolated recovery authority. Editor queries cannot mutate accepted compilation output or exchange type identities between unrelated branches.
Workspace analysis freezes one topology decision per source revision. Source projection remains an editor and diagnostic product and cannot influence checked semantics. Package-root facts, frontend bindings, CLI installation routing, and semantic query capability are each owned by one explicit contract rather than reconstructed by downstream consumers.
Compatibility
This release intentionally has no compatibility parser or fallback for the removed forms:
- remove
defaultfromconstructmembers; - replace
primitive Namewithprimitive type Nameand primitive callable declarations withprimitive func; - move standalone
conformdeclarations intoinstanceas bodylessimplmembers; - replace colon-based interface constraints with
implconstraints; - replace associated bindings in angle brackets with
{ .Name = Type }; - use callable types directly instead of treating
func(...)as an interface requirement.
The release does not add dynamic interface values, erased callable objects, interface inheritance, runtime generic dictionaries, another native target, or new practical standard-library APIs.
Qualified Candidate
The v0.18.0 release candidate was qualified from commit 4490dcd411215ae43b196dbde71f9b1afbec2ae7. Two independent optimized builds produced byte-identical archives and installed homes. The ARM64 Darwin archive is 7,498,219 bytes with SHA-256 534e4ea5231923877ee76cdadeb070a4c11f881dc09ecb517b037af49a17abf6.
Two clean locked workspace test runs each reported 1,350 passed, 0 failed, and 1 ignored. Clean warnings-denied Clippy, formatting, manifest, documentation, public-HTTPS dependency acquisition, fresh-install CLI, native execution, standard-library, and LSP checks also passed.