Sigil 0.17.16

release

A browser runtime release. Two additive changes to the WASM DOM bridge and the web runtime let downstream web applications reconcile the DOM in place and register native modules of their own, with no change for existing projects. Both are plumbing consumed by the sigil-web-client and sigil-vt packages in their own releases.

Download 0.17.16Get started

DOM primitives for in-place child reconciliation

(sigil browser dom) gains dom-insert-before and dom-remove-child (mirrored in the legacy (sigil wasm dom) alias as wasm-dom-insert-before and wasm-dom-remove-child). Together they let a virtual-DOM library move and remove individual child nodes in place instead of detaching and re-appending an element's whole child list on every render. The first consumer is the sigil-web-client keyed-reconciliation release: interfaces built on it keep DOM node identity across renders, so a focused element stays focused through a re-render and per-render DOM mutation counts fall sharply (a list re-render that previously issued over 100 mutations now issues about 4). Existing web-client code is unaffected until you upgrade sigil-web-client.

A registration hook for app-shipped native modules

The web runtime now weak-calls a sigil_wasm_vt_register hook next to the built-in browser bridges, so an extracted native package can register its primitives into a bytecode web build the same way the first-party bridges do, without the application hand-writing a registration shim. The immediate beneficiary is the new sigil-vt native terminal core. The hook resolves to nothing unless an app links a package that provides it, so every existing build is unchanged.