Repository navigation
MESH v0.9.0
MESH v0.9.0 release notes
Released 2026-10-04 (v0.9.0).
v0.9 gives build tools one operation that turns a program's components into the program's parts. It adds no MPRX syntax, changes no format and changes no runtime behavior: the compiler package gains compileProgram.
Highlights
compileProgram({ model, root, components })in@valancex/mesh-compileris the build-time program assembly boundary. It compiles each listed component ({ component, source, path }) against one manifest (model: { manifest, path }), checks the program they make, and returns a promise of{ components, assembly?, program? }.- The program check is
checkProgram. The assembled parts are given to the existingcheckProgram, so a program is valid forcompileProgramexactly when it is valid formesh check-programand for the runtime's render. There is no second set of checks. A refusal ischeckProgram's own document, inassembly; a component that does not compile iscompile's own diagnostics document, incomponents. - The program is the existing representation.
programis{ model, root, templates }: the manifest's text, the root component, and the templates as text, in the order ofcomponents. It is theProgramInputthatcheckProgramtakes and that the runtime's render takes, and the value a host assembled by hand fromcompilebefore.compileProgramwrites each template out as text itself, so a caller never converts between the objectcompilereturns and the text the program takes. - Present only when nothing failed.
programexists when no component had an error and the program check found no diagnostics. Warnings do not stop it. Every component is compiled even when an earlier one fails, so one run reports every component's errors. - No dependencies, no initialization. The compiler package still depends on nothing: not the runtime, and not VALANCE, NEXUS or PORT.
compileProgramneeds no runtime initialization, ascompileandcheckProgramdo not.
Compatibility
- Additive.
compile,check,checkProgram, the runtime,template-v1,render-v1, the manifest format and model fingerprints are unchanged. The Rust crates and the CLI gain nothing. - A component that is not listed has no template, so it is a primitive, as it always was: nothing in
compileProgramfinds components, so the caller lists those that have a template. - npm:
@valancex/mesh-compilerhascompileProgram()and the typesCompileProgramInput,CompileProgramResultandProgramComponent. All packages move to 0.9.0 together, as before. - Ranges. Before 1.0 a minor version is a new range: a package that depends on
@valancex/mesh-compileror@valancex/mesh-runtime^0.8.0does not receive 0.9. A host that wants one runtime copy needs every package that depends on the runtime to accept 0.9.
Not decided
Whether the CLI should print a program's parts, and whether the runtime package should accept the parts without a caller passing them on.