Repository navigation
MESH v0.14.0
MESH v0.14.0 release notes
Prepared 2026-10-18 (not yet published: v0.13.0 is the latest release).
v0.14 gives MPRX its first new types and its first new template construct since 0.10. A program, a manifest and a template that use none of it compile and render as they did in 0.13.0: the same template, fingerprint, render tree and keys (a test installs 0.13.0 from the registry and compares).
Highlights
- Enum types.
{ "kind": "enum", "values": [...] }: a string that is one of a closed set. A literal that is not a member isunknown-variantwith a did-you-mean; the editor completes the members inside the quotes of a prop value and beside==and!=. has(x)andx ?? y, a presence test and a default; defaults for props (defaultin the manifest). They make a templatetemplate-v2; the compiler writes v2 only for a template that uses them, and a v1 document that contains them is malformed.- Snippets.
{#snippet name(a, b)} … {/snippet}and{@render name(args)}: a piece of template with parameters, declared in a template and passed to a component (a prop of kindsnippet, withchildrenas the content between the tags), or kept local and rendered, recursively if it likes (64 levels). A snippet reads the scope it was declared in. A local snippet can be passed along as a prop value (row={fmt}). An optional snippet must be rendered inside{#if has(name)}(possibly-absent-snippet). - A composite that only forwards. A template that is only
{@render children()}makes no node of its own. - Language server: completion of snippet names, snippet parameters and enum members; hover and go to definition for snippets; signature help in a render's arguments.
- Smaller compiler. The WebAssembly is optimized after linking: 320,778 gzipped bytes become 301,420.
Compatibility
@valancex/mesh-compilerand@valancex/mesh-runtime0.13.0 read a manifest that uses a new kind asmanifest-unknown-kind, and atemplate-v2document asassembly-unsupported-format-version: nothing older misreads them.- Identity: a render site adds the step
0x08, a forwarder the fragment step0x07before it. A program that has neither keeps its keys. - New diagnostics:
unknown-variant(with enums),unknown-snippet,snippet-arity-mismatch,duplicate-snippet,children-conflict,possibly-absent-snippet, the manifest codesmanifest-snippet-misplacedandmanifest-children-not-snippet, and the runtime codesassembly-snippet-to-primitive,assembly-snippet-root-scope,runtime-snippet-depth. See the diagnostics manual.
Verification
cargo test --workspace, cargo clippy --workspace --all-targets -- -D warnings, cargo fmt --check; the package tests (compiler, runtime, conformance, language server, editor grammar) including those that run Chromium; conformance vectors enums/, snippets/, forwarder/ and passing/ in Rust and JavaScript; and the replay hashes of evidence/language/replay.mjs, which are the same on 0.13.0 and 0.14.0.