Closed tabs give their memory back, and XML pages read as XML
Two things in this release. First, memory after a tab closes. Floati frees memory the moment nothing uses it, and a separate collector finds loops of objects that only point at each other. That collector only looked at loops whose last outside link was cut in an object or a list. Modern app pages, React ones especially, also make loops whose last link was a local variable inside a function call, and those were never found: a code host's page kept its whole page, about 83 MB, after it was closed. Floati now notes any object that loses a reference and stays alive, which is how the reference collectors of this kind work (Bacon and Rajan, 2001), and that page now leaves about 46 MB, the browser's own shared caches. Script speed on real pages is unchanged. Second, the web platform. Pages and frames served as XML (XHTML, SVG images, feeds) are now read by Floati's own XML parser, so names keep their case and namespaces and a broken file shows the error the way the reference browser does; DOMParser reads XML too, CompressionStream and DecompressionStream work, and text nodes, names and namespaced lookups follow the current DOM rules. The DOM test score is now 96.3 percent of what the reference browser passes, up from 95.5.
A closed tab gives back what it held
Floati counts references: when nothing points at an object any more it is freed at once, with no pauses. A loop of objects that only point at each other never reaches zero, so a separate collector looks for such loops, starting from places where a link was cut. It used to start only from links cut inside an object or a list. React keeps its work in rings of small objects (each component's hooks, effects and pending updates), and the last outside link to such a ring is often a local variable in a function that has returned, so the ring was never looked at. Found by recording a code host's page and cutting its 900 KB of script down, automatically, until only the part that still leaked was left: React drawing the page. Now any object that loses a reference and stays alive is noted, once, as a place the collector may start. Measured on and off on the same pages.
XML pages and frames are read as XML
A page or frame served as XML (an XHTML document, an SVG image, a feed) used to be read as HTML: names lost their case, namespaces were dropped, and a broken file looked fine. Floati now has its own XML parser, with namespaces, entities, CDATA and processing instructions, and it shows a broken file's first error the way the reference browser does. DOMParser uses it for every XML type and rejects types it does not know.