Skip to content

Norm 0.12 ​

Norm 0.12 completes the vertical implementation of annotations and typed reflection.

Language ​

  • annotation declarations explicitly define their targets and source, binary, or runtime retention.
  • Annotation fields use a restricted set of scalar constant types and may declare defaults.
  • @Name(...) applies metadata to packages, types, fields, constructors, functions, parameters, and locals.
  • Annotation arguments are named; target validation, constant validation, and default normalization are compile-time operations.
  • reflect<T>() produces Type<T>; name() returns the complete type display name and annotation<A>() reads runtime metadata with a typed nullable result.
  • Reflection observes static metadata and cannot alter type checking or control flow.

Toolchain ​

  • Syntax, Semantic, Bound, and Core use dedicated annotation schema, application, target, and value models.
  • Core identity advances to Schema V8 and Language Semantics V8.
  • Source applications remain semantic-only, binary and runtime applications enter Core, and Truffle registers runtime applications only.
  • The formatter, package-header reader, parser recovery, Language Server, and VS Code grammar recognize annotations.
  • Cross-package compilation and real execution share the same metadata model.

See the annotation specification, annotation syntax, and annotation tour for the complete rules.

Norm 0.25