A performance-focused fork of Zed's GPUI with incremental rendering and native window composition. v0.1.0 is available on crates.io. The project remains experimental.
- Retained Mode reuses unchanged views, layout nodes and text measurements.
- Scroll layers reuse cached GPU tiles and list rows while scrolling, on macOS, Linux and Windows.
- Window composition embeds native content while keeping GPUI menus, popovers and dialogs above it.
GPUI Fast tracks rendering dependencies and rebuilds only what changed. Recorded Linux release-build CPU time per frame:
| Workload | Baseline | GPUI Fast |
|---|---|---|
| Unchanged window | 3.31 ms | 0.19 ms (−94%) |
| Sidebar scrolling | 5.95 ms | 0.79 ms (−87%) |
| Streaming quotes | 5.06 ms | 1.35 ms (−73%) |
The unchanged-window baseline disables retention in the same build; the other rows compare against upstream gpui-pre 0.3.7. Results depend on the workload. See Retained Mode and Scroll layers for measurements and implementation details.
Opt-in composition supports macOS, Windows and Linux (Wayland and X11), based on zed#62379. GPUI menus, popovers and dialogs, including their shadows and translucent backdrops, render above the native content on all three:
| Platform | Native content | GPUI overlays |
|---|---|---|
| macOS | AppKit view (WKWebView) | Overlay layer |
| Windows | WebView2 composition | Overlay layer |
| Linux (Wayland) | Subsurface | Overlay subsurfaces |
| Linux (X11) | Child window (WebKitGTK) | Overlay window blended by the compositing manager; cut out of the native content without one |
# WKWebView on macOS, WebView2 on Windows, a GPU surface of its own on Linux
cargo run -p gpui_perf --example native_webview
# A WebKitGTK page on Linux X11 or XWayland
cargo run -p gpui_perf --example linux_webviewAlias the published crates to GPUI's library names:
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.0" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.0", features = ["wayland", "x11"] }The platform features above select Linux backends; omit them on macOS and Windows. GPUI Kit applications should follow the compatibility setup to use the same GPUI core.
Changes to render state outside tracked entities, globals and list/scroll state need cx.notify(). See Retained Mode for details.
v0.1.0 includes Zed's GPUI through a1b71072e5. UPSTREAM records the revision for the current checkout.
GPUI Fast keeps its implementation in fast/ modules with small hooks into upstream code, making future syncs easier. See Architecture and Contributing for design, building and testing.
Apache-2.0 — copyright Zed Industries, Inc. This is a modified fork; see LICENSE-APACHE.