Wren a web browser where WebAssembly runs everything, JavaScript included

Wren 0.6.25

Wren 0.6.25 opens the DOM of same-origin frames, lays out columns and vertical text, and sleeps when nothing changes.

This is still a beta, under development.

Highlights

  • Same-origin frames: contentDocument, contentWindow.document, parent.document; each frame keeps its own built-ins (instanceof across frames is false, as in other browsers); a frame's navigations fire their navigate event and keep their own session history.
  • Multi-column layout and vertical writing modes: columns, column-span, nested columns, writing-mode, text-orientation, and documents that scroll horizontally or start from the bottom.
  • A GPU process for WebGL, WebGL in workers and transferControlToOffscreen, WebGL 2 transform feedback and queries.
  • AudioWorklet, and P-521 in crypto.subtle.
  • Pages that build large documents run about three times faster: identical styles shared, columns laid out on the layout threads, wrappers of plain nodes freed without the cost of a full collection (a page that rebuilds 10 000 nodes every frame, measured on one machine: about 28 -> 85 frames a second).
  • An image opened by itself is a viewer: zoom around the pointer (Ctrl+wheel, pinch, + and -), drag to pan, R to turn it, a click between fitted and 100 %.
  • A browser at rest draws nothing: no frame and almost no wake on a page that changes nothing, and a caret that blinks redraws only its own pixels.
  • Faster and safer closing: no wait on the shutdown watchdog, the graphics device let go before the end, wren ctl stop immediate on a throwaway profile.
  • The interface has its own zoom (Ctrl+wheel over the tabs or toolbar), and its scroll bars show only when useful.
  • Crashes and hangs fixed: WebGL while the GPU process restarts, an iframe moved into its own document, AV1 on a machine short of processors, large Web Audio graphs, a worker freeing a page's localStorage, WebSockets that stopped after a large message.
  • The User-Agent carries the Chromium tokens before Wren/<version>, so sites that check for them (Google Sign-In) answer, and scripts get 30 seconds before they're stopped.

Edit this page on GitHub