Skip to content

MESH v0.9.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 09:51
· 106 commits to main since this release
ef608d0

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-compiler is 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 existing checkProgram, so a program is valid for compileProgram exactly when it is valid for mesh check-program and for the runtime's render. There is no second set of checks. A refusal is checkProgram's own document, in assembly; a component that does not compile is compile's own diagnostics document, in components.
  • The program is the existing representation. program is { model, root, templates }: the manifest's text, the root component, and the templates as text, in the order of components. It is the ProgramInput that checkProgram takes and that the runtime's render takes, and the value a host assembled by hand from compile before. compileProgram writes each template out as text itself, so a caller never converts between the object compile returns and the text the program takes.
  • Present only when nothing failed. program exists 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. compileProgram needs no runtime initialization, as compile and checkProgram do 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 compileProgram finds components, so the caller lists those that have a template.
  • npm: @valancex/mesh-compiler has compileProgram() and the types CompileProgramInput, CompileProgramResult and ProgramComponent. 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-compiler or @valancex/mesh-runtime ^0.8.0 does 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.