Pages arrive like they do in the reference browser, in a fraction of the memory
This release rebuilds how the engine loads a page. We studied how the reference browser does it, from its source code and the web standards, measured eleven real sites side by side with the reference browser, and rebuilt our pipeline to the same model instead of tuning it on one site. The first picture of a page now waits only for what the reference browser waits for: the page itself, its stylesheets and the few small scripts at the top. Everything else (images, video, fonts, the rest of the scripts) streams in afterwards. A code-hosting site used to take about twenty seconds to show anything and now takes about one; a developer-docs site went from fifteen seconds to about two. Underneath, the network got a real upgrade. HTTP/3, the newest web protocol, now carries all of a site's requests over one connection at once, keeps working when a server rotates its encryption keys mid-connection, and asks for compressed files. The browser also got much lighter: a simple page used to need over two gigabytes of memory and now needs about 170 megabytes. Fonts are shared across tabs and the ad and tracker blocker is seven times smaller, with identical decisions. Scrolling got smoother too, most of all on Windows, where frames went from about 17 milliseconds each to about 3.
Pages show up far sooner. The first frame now waits only for what the reference browser waits for (the page, its stylesheets and the small scripts at the top), and images, video, fonts and the rest of the scripts stream in afterwards. The few scripts that decide how a page looks run before that first frame, so a page no longer flashes its plain layout and then jumps. Script downloads start the moment the page arrives, alongside the stylesheets. First paint: a code-hosting site about 20 seconds to about 1, a developer-docs site 15 to about 2, a framework's docs site 8 to about 2, a large encyclopedia 16 to about 3.
Networking
HTTP/3 (the newest web protocol, which runs over QUIC instead of TCP) now carries all of a site's requests over ONE shared connection at the same time, the way the reference browser uses it. Before, each request to a site waited for the previous one or opened a whole new connection.
Networking
HTTP/3 keeps working when a server rotates its encryption keys partway through a connection, which some servers do after the first hundred packets. Before, the next download from such a server stalled for ten seconds and could come back empty, so a page could lose a whole stylesheet.
Networking
HTTP/3 requests now ask for compressed files and carry the same details as every other request (what kind of file is wanted, where the request came from, whether a cached copy is still fresh). Before, everything fetched over HTTP/3 came uncompressed, four to five times the bytes: one stylesheet went from about 0.8 seconds to about 0.25.
Networking
Downloads are paced the way a browser paces them. Older HTTP/1.1 sites get up to six requests at a time, and sites that share one connection (HTTP/2 and HTTP/3) get all of theirs at once instead of three at a time, so a page with eighteen stylesheets no longer waits through six rounds. Stylesheets that import other stylesheets, and JavaScript modules that import other modules, now fetch each layer of imports all at once. A site that redirects in a loop is stopped after twenty hops instead of hanging the tab, and a file compressed twice is unpacked correctly.
JavaScript & JIT
JavaScript modules behave as the standard says: a module shared by two scripts on a page runs once, not twice (running twice made some sites throw errors), and each module file is downloaded once.
Memory & reading
Much lighter on memory. A simple page used to need over two gigabytes and now needs about 170 megabytes. Fonts now build each letter's shape only when it is first drawn, and every tab shares the same loaded fonts (the reference browser's font cache works this way), so opening a page spends about 6 milliseconds on fonts instead of about 430.
Privacy & Shields
The ad and tracker blocker keeps its 115,000 rules in 20 megabytes instead of 150. It blocks exactly the same things: every decision was checked against the old blocker on the real filter lists.
Rendering
A website's variable font (one font file that covers every weight) could be drawn with another site's glyphs if both used the same font name. Each font is now told apart by its actual contents.
Rendering
Pages that react to your scrolling, like the encyclopedia's table of contents that highlights where you are, now re-lay out only the part that changed. Each scroll step on a large encyclopedia went from about half a second of work to about a fifth, and the page's own scroll scripts spend about 50 milliseconds instead of 200.
Memory & reading
Scrolling on Windows no longer hitches. The picture of the page now stays in graphics memory instead of being sent again for every frame, so a frame takes about 3 milliseconds instead of about 17, and only one frame in 224 misses the screen's refresh instead of half of them. macOS benefits too.
Rendering
Scrolling stays live while a page is still loading, and background workers paint the next part of the page ahead of you, so a scroll never waits for that painting to finish.
Tabs & interface
Fixes you can see: the encyclopedia's references show one link icon per link and no longer overlap the text, and superscripts and subscripts leave room for themselves. Pinned elements that stay on screen while you scroll, like the encyclopedia's appearance options, respond to clicks after scrolling. Pages that use newer CSS selectors or animations no longer pause for over a second when you scroll.