Skip to content

Nocter v0.3.0

Choose a tag to compare

@rvo-jp rvo-jp released this 05 Aug 06:10
· 109 commits to main since this release

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.