NovaLang — Release Program
Release target
Recommended first public milestone: 0.2.0 public alpha, explicitly unstable. Do not call the current system production-ready or 1.0.
Quality gates
R0 — product contract and freeze
Goal: decide what NovaLang is before scaling documentation and branding.
- approve philosophy, audience and stable/experimental feature matrix;
- decide product name, executable, extension and repository identity;
- write syntax RFC and compatibility/edition policy;
- define supported operating systems and release tier;
- define threat model and policy for untrusted code.
Exit: no unresolved naming or core-syntax decision.
R1 — correctness foundation
- fix interpreter expression statements;
- fix GC temporary rooting;
- fix optimizer boolean folding;
- make cache depend on the complete module graph;
- implement differential interpreter/VM tests;
- add regression and property tests for every fixed invariant;
- reject unsupported constructs at the earliest reliable stage with actionable diagnostics;
- publish a generated feature matrix.
Exit: zero known P0 correctness bugs; parity corpus green.
R2 — language and module stabilization
- define normative lexical, grammar, type and runtime behavior;
- implement real short-circuit semantics;
- replace compile-time range expansion with range iteration;
- introduce stable definition/module identities and visibility enforcement;
- specify Unicode string length/equality/value semantics;
- add source maps and stack traces;
- implement approved edition migration and canonical formatter output.
Exit: language conformance suite and migration tests green.
R3 — security and package hardening
- checksums in archive, index and lockfile;
- immutable package versions;
- transactional install/cache/registry writes with rollback;
- resource limits and isolated execution profile;
- symlink-safe bounded filesystem traversal;
- cargo-deny/audit, SBOM and dependency policy;
- security response policy and vulnerability reporting.
Exit: threat-model controls tested; dependency audits green.
R4 — developer experience
- coherent CLI input model, structured exits and JSON diagnostics;
- shell completions and generated command reference;
- LSP debounce/cancellation/version guards and incremental synchronization;
- go-to-definition, references, rename, signature help, symbols and code actions;
- grammar/completion generated from one language metadata source;
- clean, bundled and tested VS Code artifact;
- binary installation, update and uninstall flow.
Exit: installation and editor smoke tests pass on Windows, Linux and macOS.
R5 — private release engineering
- proprietary license and closed-source distribution contract;
- support, security, release checklist and private reporting policy;
- CI matrix across three operating systems, stable Rust and MSRV;
- website, documentation, extension and dependency gates;
- tag-driven release archives with checksums, VSIX, SBOM and artifact smoke tests;
- HTTPS distribution independent from repository authentication;
- safe install, update, uninstall and rollback rehearsal.
Exit: private release checklist signed off; no open P0/P1 release blocker.
R6 — post-alpha hardening
- coverage thresholds and long-running stress tests;
- fuzz targets for lexer, parser, bytecode and package archives;
- tracked compiler/runtime performance budgets and regression alerts;
- native artifact signing and provenance attestations;
- sandboxed playground after resource isolation is independently reviewed.
Exit: security and performance budgets remain green during the beta window.
Priority matrix
| Work | Impact | Complexity | Risk | Dependencies |
|---|---|---|---|---|
| GC rooting | critical | medium | high | none |
| Interpreter statements | critical | low | low | none |
| Optimizer type correctness | critical | low | medium | none |
| Module-aware cache | critical | medium | medium | module graph |
| Feature matrix/early rejection | high | medium | low | R0 |
| Syntax/edition RFC | high | high | high | product decision |
| HIR/module identities | high | very high | high | spec |
| Package integrity/atomicity | high | high | medium | format design |
| LSP responsiveness/features | high | high | medium | stable frontend |
| Installers/releases | high | high | medium | supported platforms |
| Complete docs/site | high | very high | low | R0–R4 contract |
| Playground | medium | high | critical | sandbox/resource limits |
Required decisions
- Keep the public name NovaLang, or run a naming/availability phase before branding and repository creation?
- Preserve current syntax for the first alpha, or approve an edition RFC around
fun,val/varand removal of redundant spellings? - Confirm the first target as 0.2.0 public alpha, rather than beta or 1.0.
- Provide/authorize the GitHub owner and private repository name when the GitHub connection is available.