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.classandClass<T>are the sole type-reflection entry point, preserving nullable and complete generic types at runtime.Owner.name.field,name.function, andOwner.name.functionproduce 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>, andConstructor<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
@Documentstores its body indescriptionand associates code through nullabletypes,functions, andfieldslists.- Annotation constants support scalars, declaration references, and recursive
Listvalues; 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.