Repository navigation
Releases: longbridge/gpui-fast
Release list
v0.1.6
GPUI Fast v0.1.6 fixes a retained-view crash and stale scroll-layer rendering, improves layout caching and draw ordering, and allows compatible dependency updates.
- Fix
invalid SlotMap key usedafter adding or removing an anonymous wrapper around a clean cached view. Reused records now retain the current layout node and rebuild path, addressing the follow-up report in gpui-kit#3408. - Fix scroll-layer scene indexes when a list view is drawn again.
- Upgrade layout to Taffy 0.14, whose constraint cache keeps clean subtrees laid out across multiple measurement constraints.
- Count primitives into draw order instead of sorting them with comparisons.
- Use compatible sibling dependency requirements so consumers can update the core without unnecessarily updating compatible platform packages. Support snapshots remain pinned.
Changes: #47, #49, #50, #51, and #52. No new public API.
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.6" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.6", features = ["wayland", "x11"] }Full changelog: v0.1.5...v0.1.6
v0.1.5
GPUI Fast v0.1.5 fixes retained-view rendering correctness and improves scrolling performance for chat transcript lists.
- Fix the “measurement has not been performed” panic for updated child views under independent layout roots, including
prepaint_as_root,uniform_list, variable-heightlist, andcontainer_query. - Update flow and deferred child views in the same frame, rebuild ancestors when their own scroll-offset reads change, and retain the current layout nodes and element states after splicing.
- Keep chat transcript lists on their scroll layers through row updates, unrelated notifications, and animations. Changes affecting one row repaint that row instead of the whole list.
- Preserve layout nodes and measurements for rows scrolled out and back into view, and keep rebuilt measured leaves clean when their measurements have not changed.
Changes: #44 and #46. No new public API. Applications using GPUI Kit can also benefit from the companion changes in longbridge/gpui-kit#3407.
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.5" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.5", features = ["wayland", "x11"] }Full changelog: v0.1.4...v0.1.5
v0.1.4
GPUI Fast v0.1.4 keeps X11 overlays visible in pinned windows, fixing a regression in v0.1.3.
- Hyprland renders a pinned window (such as Omarchy's pop-out) above every other window, which hid the X11 overlay window added in v0.1.3: every menu, popover and dialog in a window with native content disappeared. Overlay content is now also drawn into the window, with its opaque parts cut out of the native content, so it always shows; in a pinned window only the shadows and backdrops over native content are missing.
- The overlay window is marked as an unfocusable dropdown menu transient for its window, and is recreated rather than remapped so it stacks above a floating window raised meanwhile. It reuses its renderer, taking about 2 ms instead of 85 ms.
- Published crates keep the workspace's rustc lints, so upstream's
rust_analyzerandnightly_coveragecfgs no longer raiseunexpected_cfgswarnings. - CI installs GTK and WebKitGTK for the
linux_webviewexample.
Changes: #43. Adds Background::is_opaque and WgpuRenderer::replace_surface_sharing_context for window composition.
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.4" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.4", features = ["wayland", "x11"] }Full changelog: v0.1.3...v0.1.4
v0.1.3
GPUI Fast v0.1.3 lets GPUI overlays blend over native content on X11.
- On X11, when a compositing manager blends ARGB windows (XWayland always has one), GPUI content above a native surface is drawn into a transparent override-redirect window over the window. Shadows and translucent dialog backdrops now blend over native content such as a WebView, which previously turned blank under a dialog.
- The overlay window only takes input where it has content; other input reaches the native content and the window below.
- Without a compositing manager, overlays are still cut out of the native surface as before.
- Add the
linux_webviewexample ingpui_perf: a WebKitGTK page under a menu, a popover and a dialog. - Window composition with native content is supported on macOS, Windows and Linux (Wayland and X11).
Changes: #42. No public API changes.
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.3" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.3", features = ["wayland", "x11"] }Full changelog: v0.1.2...v0.1.3
v0.1.2
GPUI Fast v0.1.2 improves native window composition synchronization.
- Skip redundant native surface bounds updates, and retry when a platform update fails.
- Preserve macOS native and GPUI view hierarchy during geometry-only updates, preventing repeated detach/reattach operations from disrupting mouse tracking and first responder state.
- Continue rebuilding the view hierarchy when view identity, parent, or order changes, and restore externally reparented views.
Changes: #41. No public API changes.
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.2" }
gpui_platform = { package = "gpui-fast-platform", version = "0.1.2", features = ["wayland", "x11"] }Full changelog: v0.1.1...v0.1.2
v0.1.0
GPUI Fast v0.1.0 is the first crates.io release: faster rendering, native window composition, and an updated GPUI upstream.
Performance
- Retained Mode reuses unchanged views, layout nodes and text measurements, rebuilding only what changed.
- Scroll layers reuse cached GPU tiles and list rows while scrolling. Supported on macOS (Metal), Linux (wgpu) and Windows (Direct3D 11).
- Less frame overhead through cached numeric glyph layouts and fewer allocations.
Recorded Linux release-build results:
| 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. See the benchmarks for details.
Window composition
Embed native content while keeping GPUI menus, popovers and dialogs above it. Composition is opt-in and supports macOS, Windows, Linux Wayland and X11, based on zed#62379.
cargo run -p gpui_perf --example native_webviewThe example embeds WKWebView on macOS and WebView2 on Windows. Linux demonstrates an independent GPU surface rather than a WebView.
Upstream
Synced with Zed's GPUI through a1b71072e5, including the shared Apple renderer and Linux display-connection updates.
Install
[dependencies]
gpui = { package = "gpui-fast", version = "0.1.0" }The project remains experimental. Changes to render state outside tracked entities and globals need cx.notify().