Latest Results
perf(rowan): share elements across the builds of a node cache
A node cache now keeps its arena across builds, so a build reuses the elements
of earlier ones again, as it did before arenas. The cached benchmarks, like the
Tailwind parser's, and reparses with a kept cache had lost that sharing.
Handles to arena elements now always count a reference, from any thread,
including while a build is running. This is what makes it safe for a build to
allocate in an arena whose earlier trees are still in use. A build's own
handles are the exception: the cache makes them from pointers instead of
cloning them, and each one moves into an element, is discarded, or becomes the
counted root. Factories can drop the children they're given, so the factory
wrappers discard handles to elements of the running build instead of dropping
them. Clones and drops no longer read the arena's open flag, which also cuts
the cost of edits, like the formatter's rewrites.
The cache starts a new arena once its arena holds twice the bytes of its first
build and more than 1 MiB, so that elements earlier builds made don't
accumulate without bound.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>dyc3/perf-rowan-green-arena-prototype Latest Branches
0%
0%
-40%
© 2026 CodSpeed Technology