Norm 0.20
Norm 0.20 reduces the path from a single source file to a distributable program to one command, while package-less local applications use the same type system as Java frameworks.
Local application identity
- A package-less single-file application may omit its Module name, version, and exports. The compiler assigns an internal, non-publishable identity.
- Java annotations, application proxies, runtime dispatch, and the language server share one host type-name mapping.
std.application.applicationPackage()supplies the actual host package required by framework scanning without a duplicated string in application code.
Self-contained application builds
norm build web.normcreatesweb.norm.exebeside its source.norm buildandnorm build .read a project'sapplication.normand create<module>/build/<artifact>.exe.- The build resolves, verifies, and freezes exact NARs and the complete Java JAR graph. The result accesses neither GitHub nor Maven at runtime and requires no Norm or Java installation.
- Application content and the Norm runtime are cached by digest, so a changed toolchain payload cannot reuse stale runtime content under the same version.
Windows x64 is the application EXE target in 0.20. See application builds for command and output conventions.
Toolchain consistency
VS Code, the CLI, and application builds share the Module graph produced by ProjectLoader. The extension exposes the active toolchain source and version and prefers a newer workspace build within the same minor while developing Norm itself.
Release acceptance additionally builds an application EXE with NAR and Java dependencies and executes it offline from an empty cache.