Pages wait less for their own scripts and styles
A speed and correctness release for the engine. A script that loads a module with import() no longer stops the page while the module downloads, a class change restyles only what a :has() rule can actually see, and loops with try/catch, class constructors and Object.keys run several times faster. On three real pages, script, style and layout time fell by 16% overall against 0.1.416, and no page got slower.
No more waiting inside a script
When a page loaded a module with import(), the engine thread waited for the download before it went on, so timers and other scripts stood still. The download now finishes in the background and the import resolves from the event loop, as in the reference browser. A test fails if the engine thread ever waits for a module again.
Restyle only what can change
A stylesheet with a :has() rule made every class toggle restyle and lay out the whole page, because the engine could not tell which :has() rules the change could flip. It now knows which attributes, class names and tags each rule reads, and skips the rules a change cannot reach. Text changes restyle their own element, not the page.
Faster loops, classes and lookups
Loops with try/catch, derived class constructors, Object.keys over an object and calls across many closures of one function all run on faster paths.