Programming Language

Nocter

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

/development/milestones/v0.24.0.md

v0.24.0: Explicit Value Subjects

Status: complete, published, and externally audited (2026-09-01). The publication record freezes the release evidence. v0.24.0 makes external value ownership visible at use sites and gives constants one unambiguous source spelling.

Release Boundary

  • use path imports a module namespace under its final segment.
  • use path as alias imports that namespace under an explicit alias; use / as root names the package-root namespace.
  • selected imports and selected re-exports accept only type-namespace declarations: built-in and nominal types, type aliases, and interfaces;
  • external functions and constants are used through their namespace, such as io.print(...) and limits.MAX_SIZE;
  • every constant declaration uses ASCII UPPER_SNAKE_CASE;
  • completion and code actions propose the same source forms and derive a deterministic namespace alias when the default name collides.

No compatibility resolution keeps selected value imports or lowercase constant declarations working. see remains direct same-module source visibility and is unaffected.

The final review records authority boundaries, findings closed during implementation, residue checks, and qualification evidence.

An adversarial installation check subsequently exposed that path-only release metadata could not distinguish a mixed compiler and standard-library image. The installation image identity review records the closed replacement: manifest v2 binds both artifacts by content, and package resolution validates the standard package's declared release.

Responsibility Boundaries

Syntax recognizes namespace aliases and preserves their exact name node. Declaration lowering owns top-level import classification, value-selection rejection, namespace insertion, and constant-name validation. Body checking applies the same value-selection rule to lexical imports. The declaration graph remains the sole authority for whether an exported entity belongs to the selectable type namespace.

Analysis consumes that graph decision. It emits selected imports for types and qualified namespace plans for values; the protocol layer only serializes compiler-owned labels and edits. Standard and example source use ordinary language rules and receive no migration-only compiler path.

Qualification Gates

Completion requires:

  • parser, lowering, checking, analysis, LSP, conformance, and runtime regression tests;
  • clean compilation of the complete standard library and every runnable example from an isolated Nocter home;
  • locked full-workspace tests and warnings-denied Clippy;
  • formatter, generated documentation, manifest, and repository-integrity checks;
  • deterministic release assembly and rejection of modified compiler or standard-library content;
  • a final review for obsolete selected-value paths, duplicate namespace decisions, diagnostic-code collisions, responsibility reversal, and caller-discipline assumptions.

All gates pass.

Release Preparation

The release-preparation record owns the exact candidate source, two independent source qualifications, deterministic artifact identity, content-bound manifest, and fresh installed-home evidence. All gates pass. The separately authorized publication is recorded in ../releases/v0.24.0.md.