Skip to content

Norm 0.22 ​

Norm 0.22 unifies semantic and resource ownership across the compiler, language services, and application builds, with fixes for generic inference, rename, nullable flow analysis, and native archives.

Tests within modules ​

Modules support separate production and test source sets. std.testing.Test marks independently executable test functions, with CLI filtering by function or package and editor Run Test actions. Tests reference the declarations they verify; API documentation derives reverse links and displays test source. All 54 standard-library tests belong to the std module. See the testing API. Production builds exclude test source sets; @Test itself does not remove functions declared in production sources.

Types and editor behavior ​

  • Generic parameter identities distinguish owning declarations and overloads, preventing bounds from leaking between declarations.
  • Generic calls infer arguments through class and interface inheritance. Completion and compilation share type application, assignment relations, and constraint solving.
  • Rename follows class overrides and interface witnesses to preserve dynamic dispatch. Member queries suppress implemented or overridden declarations.
  • Flow analysis after a loop preserves the zero-iteration path. Nullable iteration and index receivers are rejected during semantic analysis.
  • String interpolation expressions support completion, and incomplete literals use lexer recovery results.

Compilation and application boundaries ​

The CLI, Polyglot integration, and application builds share compilation and resource preparation. Compiled applications own their captured Java classpath, resources, and annotation processing output; execution and packaging reuse those inputs. Language services publish consistent project snapshots, including standard-library source overlays.

Builtin protocols derive from ABI contracts, and Java binding scans share effective inherited members. Native application archives created by the modular CLI support serialization of source locations. See the compiler architecture for ownership and verification, and application builds for delivery behavior.

Usage and boundaries ​

Upgrade the CLI and VS Code extension together, then reload the editor window. Native build and platform requirements remain documented in the release process. This release primarily changes compiler internals and rejects programs that were previously accepted incorrectly; it does not establish support for every Java framework path.

Norm 0.25