Skip to content

Norm 0.17 ​

Norm 0.17 unifies type literals, declaration references, runtime reflection, and annotation metadata. It also establishes @Document as structured documentation that binds directly to code declarations.

Declaration references and reflection ​

  • T.class and Class<T> are the sole type-reflection entry point, preserving nullable and complete generic types at runtime.
  • Owner.name.field, name.function, and Owner.name.function produce typed field, top-level function, and unbound method references. Deleted or inaccessible targets and unresolved overloads fail during compilation.
  • Field<Owner, Value>, Function<Signature>, Parameter<Value>, and Constructor<T> expose one declaration-metadata model. Interceptor contexts carry the same references.
  • Class<T> enumerates fields, functions, and every constructor. Existential projection ? preserves the boundary of heterogeneous descriptor collections.
  • Bound methods use receiver.method; an unbound method signature contains its receiver explicitly and retains dynamic dispatch.

Structured annotation metadata ​

  • @Document stores its body in description and associates code through nullable types, functions, and fields lists.
  • Annotation constants support scalars, declaration references, and recursive List values; nullable parameters may be omitted.
  • Core metadata retains declaration identity rather than copying declaration names or public ordinals into a second source of truth.
  • Validation violations reuse function, parameter, and field references, with names and types queried from declaration metadata.

Compiler and tooling ​

The Core schema, language semantics, and definition identity advance to V11. Canonical Core now represents multiple constructors, existential projections, and typed annotation declaration references. Verification, serialization, runtime execution, formatting, language services, and VS Code syntax share the same semantics.

Release acceptance covers the compiler, Core identity, JVM and native execution, deleted and overloaded reference failures, runtime annotation materialization, the standard library, the VS Code extension, and documentation builds.

Migration and boundary ​

Replace reflect<T>() and Type<T> with T.class and Class<T>, and replace receiver::method with receiver.method. Field<Owner, Value> replaces string-based field types and untyped reads. Function<?> supports metadata queries only; execution requires an exact Function<R(P...)>.

The declaration-reference specification and annotation specification define the complete rules.

Norm 0.25