Tooling
Formatting uses the current editor text. Diagnostics and semantic editor features use the compiler snapshot. Type checking, name resolution, and project boundaries are implemented once.
Current capabilities
- Formatting and compiler diagnostics;
- Completion driven by scope and expected type;
- Signature Help and Hover;
- Go to Definition and Find References;
- Prepare Rename and semantic Rename;
- Navigation across files, packages, and standard-library sources;
- Project analysis including unsaved documents.
Structured API documentation reuses the same semantic entry point; see API Documentation Export. See Application Builds for self-contained application output conventions.
Start with examples
With Norm 0.25, run norm hello in an empty directory to create five independent .norm programs and English and Chinese guides. Start with norm hell.norm, then follow the generated example guide.
norm main.norm hides startup preparation logs by default. Use norm main.norm --debug or norm run --debug main.norm to write startup phases, elapsed time, and actual Maven downloads to stderr. The same option enables debug logging for the application and its dependencies. See application logging for level precedence and routing. Error diagnostics always appear. See RunCommand for progress and JarResolverTest for the network boundary of local dependencies.
Update running code on save
norm run main.norm and norm main.norm watch project inputs during JVM source execution. Saving code selects the new version at execution boundaries while retaining running state. Monitoring ends when the program exits. Prepared application caches participate in the same execution path.
Failed compilation leaves the running version active. Ambiguous active regions retain their version and report a pending update. Explicit state conversion is defined by the standard-library StateMigration and MigrationState; continuous self-modification is exercised by SelfMigratingApplicationTest. Built application artifacts load their prepared program directly. Annotation reference bindings are indexed by CoreAnnotationSites, BindingId, and AnnotationReferenceLinkageExecutionTest.
The public update and batch lifecycle is defined by ApplicationSession and ExecutionUpdateResult; state compatibility is defined by CoreRuntimeSchema. Validation entry points are LiveExecutionTest, LiveStructureExecutionTest, LiveMigrationBoundaryTest, LiveRuntimeTypesExecutionTest, and SelfUpdatingApplicationTest.
Runtime identity and Java dependency components are indexed by CoreRuntimeIdentity, JavaRealmPool, and ApplicationRuntimeRevisionTest. Transaction validation is indexed by LiveContainerMigrationExecutionTest and LiveConstructionExecutionTest. Transactions cover Norm state; external I/O is not rolled back.
Retained graph conversion is implemented by RuntimeStateTransaction and RuntimeObjectState. Executable contracts cover enum graphs, generic replacements, interface changes, reflection snapshots, call boundaries, and active iterators.
VS Code
For AI Agent navigation through specifications, queries, and validation, see Agent Development.
The official VSIX bundles a same-version self-contained CLI for supported platforms. See VS Code Development Experience for installation, execution, project detection, and CLI selection; see the release process for publication assets and platform matrix.
Shared semantic entry point
Source files
→ Project source set
→ Semantic model
→ diagnostics / completion / signatures
→ hover / navigation / references / rename
→ formatter / compilerSee Status for the currently delivered tooling boundary. A debugger and online execution environment are not yet in a release. norm run defaults to the current directory. Directory execution selects application.norm, or main.norm when it is absent. Use norm run -- arguments... to pass application arguments without an explicit path.