Language
Norm is a statically and strongly typed language for application development. It retains familiar structures such as type-first declarations, braces, classes, interfaces, and exceptions, while making the semantics of sharing, value flow, and runtime behavior visible in declarations and calls.
Core design
class identity
value data
enum alternatives
interface capability
ref controlled aliasingThese five constructs are not syntactic aliases for one object model. They define distinct boundaries for identity, mutability, finite states, nominal capabilities, and location references. Functions, generics, annotations, the standard library, and the toolchain compose within those boundaries.
Where to start
| Purpose | Documentation |
|---|---|
| Learn the language step by step | Language Tour |
| Understand the design values | Language philosophy |
| Evaluate whether a feature fits the language | Design principles |
| Understand the language and runtime as a whole | Language design white paper |
| Compare specific dimensions with other languages | Comparisons, tradeoffs, and direction |
| Look up precise compiler rules | Language Reference |
| Check implementation maturity | Status |
This guide explains stable design intent without repeating tutorial steps or specification clauses. When the current release differs from the long-term specification, use Status and the corresponding version contract to determine availability.
Next: Language philosophy.