This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+4 more
Summary
AI summaryUpdates Highlights, See also, and dirty across a mixed release.
Full changelog
Pilates 1.0 — Layout engine GA
Three packages promoted in this cycle:
@pilates/[email protected]— the pure-TypeScript flex layout engine.@pilates/[email protected]— declarative tree → painted ANSI string.@pilates/[email protected]— frame-to-frame cell diff + minimal redraw (bumped alongside for monorepo consistency).
Highlights
- Pure TypeScript, zero runtime dependencies. No WASM, no bridge, no init cost. Runs anywhere Node / Bun / Deno / browsers run.
- Faster than WASM Yoga on every benchmarked workload. 7-10× across build-then-layout (10 → 10000 nodes), 7× on the relayout-boundary headline scenario.
- Validated cell-for-cell against WASM Yoga across 33 oracle fixtures, plus a 500-runs-per-CI property fuzzer comparing cached vs cold layout paths byte-for-byte.
Headline perf win (Phase 3 — relayout boundaries)
A node with explicit width AND height (the idiomatic TUI pattern — fixed-height rows, sidebars) acts as a Flutter-style relayout boundary. Leaf mutations dirty the container but don't propagate to root, so the root layout cache stays valid. Combined with _hasDirtyDescendant subtree-skip, the cache-hit path is O(dirty), not O(N).
| Scenario | Pilates core | yoga-layout (WASM) | Speedup |
|---|---:|---:|---:|
| 10 nodes | 1.5µs | 15.1µs | 10× |
| 100 nodes | 29µs | 263µs | 9× |
| 1k nodes | 0.17ms | 1.52ms | 9× |
| 10k nodes | 2.16ms | 14.6ms | 7× |
| 1k, mutate one leaf/frame | 129µs | 56µs | Yoga wins ~2.3× |
| Same + explicit-sized boundaries | 7.1µs | 51µs | 7× |
Mean per-pass on darwin/arm64, Node 26. Reproduce: git clone github.com/pilatesjs/pilates && pnpm install && pnpm bench
What's also in this release line
@pilates/[email protected]— React 19 reconciler driving the engine;useFocus,useInputwith bracketed paste, mouse + scroll,<ScrollView>,<ErrorBoundary>,<ThemeProvider>.@pilates/[email protected]—<TextInput>,<TextArea>,<Select>,<MultiSelect>,<Tabs>,<Table>,<Spinner>,<ProgressBar>. Built on@pilates/react. 0.2.0 promotion next.
Install
npm install @pilates/core # just the layout engine
npm install @pilates/render # declarative tree → painted string
npm install @pilates/react @pilates/widgets # the React stack
See also
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Pilates
All releases →Related context
Beta — feedback welcome: [email protected]