Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

/development/packaging/v0.3.0-release-notes.md

Nocter v0.3.0 Release Notes

Nocter v0.3.0 turns the allocator and ownership foundation from v0.2.0 into a more productive language surface. It adds compiler-tracked lexical regions, typed construction, sequence and iterator composition, callable values, interface default methods, and substantially deeper editor support without introducing runtime dispatch or a process-global allocator.

Highlights

  • Ordinary allocating APIs use a statically propagated current allocation context. Lexical region name using allocator { ... } scopes create shorter storage origins, reject escapes, and clean up correctly across normal and early exits. Explicit TryAllocator APIs retain failure-atomic recoverable allocation.
  • Nominal types own their public creation APIs in construct Type { ... } declarations. A type can select one public default construction entry from raw construction, a literal, or an associated function while keeping fields and representation private.
  • User-defined typed [] and "" literals support generic element packs, explicit using allocation selection, and sequence spread through copy, borrow, or move modes.
  • String interpolation produces owned String values through trusted formatting capabilities and the current allocation context.
  • Public from contracts expose result provenance without source-level lifetime parameters. Generic capability sets and body-bearing impl Interface for Type { ... } declarations provide explicit, statically selected conformance.
  • Optional and fallible values compose as first-class values. Postfix ? propagates either channel while preserving nested outcome identity through storage, cleanup, ABI classification, lowering, and editor presentation.
  • Protocol-driven for loops, conditional iterator conformances, lazy adapters, exact-size preservation, and Vec builders support collection pipelines without hidden intermediate collections.
  • Explicit-capture closures implement built-in &func, &+func, and func callable contracts. Interface default methods provide reusable behavior derived only from required capabilities; map, filter, terminal operations, and to_vec compose as statically specialized method chains.
  • Hover, completion, signature help, definition, references, semantic tokens, and document symbols share compiler-owned occurrence and presentation models. Generic bounds, concrete owners, construction entries, conformance members, callable capabilities, provenance, and allocation effects therefore use the same declaration identities as compilation.

Migration from v0.2.0

  • Interface conformance is written as a body-bearing impl Interface for Type { ... } declaration. Required members belong to that declaration; same-named inherent methods do not establish or override conformance.
  • Public literal definitions and associated functions that directly produce their nominal type belong to that type's construct declaration. The compiler does not synthesize compatibility surfaces for detached declarations.
  • Closure capture is explicit. Readonly, readwrite, and owned captures use &name, &+name, and move name; unlisted outer bindings are rejected.
  • The v0.2.0 contract remains available as a historical reference. v0.3.0 is still a pre-1.0 release and does not promise source or binary compatibility with future releases.

Distribution

The release asset contains one .nocter/ directory with the compiler, version and manifest metadata, license files, and standard library. The supported host and native target are arm64-darwin.

Normal Nocter builds do not require LLVM, clang, as, ld, an external runtime library, or the Xcode Command Line Tools. The compiler emits ARM64 Mach-O executables directly and resolves the standard library relative to its installed .nocter/nocter binary.

Verification

The release gate passed 2,161 library tests, 296 CLI build tests, 6 formatter tests, 15 LSP protocol tests, 449 native run tests, 199 distributed-home tests, and 6 example-corpus tests. Formatting, Clippy with warnings denied, the 50-page public documentation build, optimized local packaging, installed-home doctor, packaged compiler check/run smoke tests, and archive-content inspection also passed. The installed compiler reports Nocter 0.3.0, and repository and packaged homes agree across all Phase 0 through Phase 10 acceptance surfaces.

See the v0.3.0 release record for completion criteria, verification boundaries, and explicit non-goals.

Explicit Limits

  • The only supported native host and target are arm64-darwin.
  • No source-level lifetime parameters, runtime interface dispatch, async execution, concurrency, workspace package manager, or stable cross-version ABI is included.
  • LSP rename, code actions, formatting requests, workspace-wide indexing, and inlay hints remain future work.