Norm 0.19
Norm 0.19 makes single-file applications and GitHub package management one user path. A .norm file declares its module, dependencies, business types, and application entry; norm web.norm resolves, compiles, and runs it.
Single-file applications
- Declarations identify
Module module()andApplication application()without requiringmodule.normorapplication.normfilenames. - The CLI and language server build the module graph through the same
ProjectLoader, so execution, diagnostics, completion, and navigation share dependency semantics. std.application.Applicationowns service lifetime; the CLI contains no framework-specific path.
GitHub package repository
repository: "github"usesnormlanguage/registryto locate the repository that owns a module.- Every module publishes its NAR and SHA-256 as an immutable
v<version>release in an independent repository. Downloads are digest-verified and atomically cached. - The built-in Maven Resolver continues to obtain a Java binding's root artifact and transitives. Users need no Maven, Gradle, POM, or lock file.
- The Norm repository retains the language, toolchain, and consumer examples, but no Java binding package sources or centralized NAR repository.
Self-contained runtime
- The Windows CLI ships as one directly executable
norm.exe;norm.exe setupinstalls it for the current user and configuresPATHautomatically. - Windows, Linux, and macOS CLIs use the same internal
norm/bin,norm/lib, andnorm/runtimelayout and require no system Java installation. - The CLI, language server, VS Code, and Java bindings share one JVM execution model. Independent packages can dynamically introduce JARs and annotation processors that did not exist when Norm was released.
- Release acceptance runs the complete language suite through the final distribution and loads the Commons Lang binding from the GitHub Registry and Maven repository.
On Windows, upgrade from an older archive by downloading the new norm.exe and running norm.exe setup once. Manual PATH maintenance is no longer required.
The runnable contract is the Micronaut single-file application. The package manager defines publication and ownership.