Wren

Wren 0.5.0

Wren 0.5.0 drives from Puppeteer, decodes frames for pages (WebCodecs), draws the web's newer text and colour, and moves its JavaScript glue and platform layers toward Linux. WebAssembly is still the only execution engine.

This is still a beta, under development, and Windows-only: the Linux work of this version is code that compiles and is checked at the type level, not a browser anyone has run there.

Highlights

  • A remote debugging port. wren --remote-debugging-port=9222 speaks the Chrome DevTools Protocol (Puppeteer and Playwright attach; /json/version and /json/list answer), and --headless runs with no window at all (it renders to an offscreen target, so captures still work; no desktop session is needed). wren ctl start keeps a window that is never shown (--hidden) unless you ask for --headless. Known limits are in docs/cdp.md (no Fetch.*, no response bodies).
  • More of the web. WebCodecs (VideoFrame, ImageDecoder, VideoDecoder, AudioDecoder, AudioData, encoded chunks; the encoders refuse honestly), URLPattern, scheduler.postTask / yield and TaskController, Web Locks, Intl.DurationFormat, bitmaprenderer canvases, WebVTT text tracks and audio and video tracks, requestVideoFrameCallback, a VP9 software decoder, Managed Media Source, long animation frames with their render timing, navigator.userActivation, element.sheet and document.styleSheets, emoji in a canvas, createImageBitmap from more sources.
  • Natively implemented. Intl, custom elements, shadow DOM, frames, the async clipboard and the IndexedDB façade moved from JavaScript prelude to native code (IndexedDB passes the same WPT as before).
  • Text. lang selects the locl feature, optical sizing, text-rendering, colour glyphs, and smoothing of canvas text on the CPU.
  • Pages and chrome. Middle-click autoscroll, a translucent − % + zoom indicator at the end of the address bar, an optional new-tab page of public-domain artworks (browser.newtab.art.enabled, off by default), a font preview for WOFF2, the content blocker's ##^ filters, DevTools improvements, a silent --uninstall and a winget manifest.
  • Partial redraw. The compositor can repaint only what changed (browser.gpu.partial_redraw, with a verifier that compares against a full frame).
  • The toolkit 0.50.0. A Linux window (X11 and Wayland) with its platform services, a neutral wgpu render surface, and the config, i18n, arena, instance, testkit and dbus packages. Wren's src/browser now type-checks for Linux; nothing of it was run there.
  • Web platform tests. The measured folders now pass about 130 000 subtests (urlpattern 77 %, scheduler 60 %, web-locks 72 %).

Known limits

  • Linux: the window, the services (clipboard, drag and drop, tray, portals, accessibility) and the render path were written and type-checked, not run. Canvas 2D has no wgpu backend yet.
  • WebCodecs: no video or audio encoder; software H.264 decoding is missing and hardware frames give an error, not pixels.
  • CDP: Page.getFrameTree is empty; no Fetch.*, no response bodies.
  • The new-tab artworks come from two sources (Cleveland Museum of Art, Wikimedia Commons); two others were not usable.
  • Several features were exercised by tests and a few manual sessions, not over a long time: partial redraw, lang/locl shaping, the VP9 decoder and the video fast path.

Edit this page on GitHub