Skip to content

Releases: longbridge/gpui-fast

v0.1.6

Choose a tag to compare

@huacnlee huacnlee released this 09 Oct 14:12
c4b8873

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 used after 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

Choose a tag to compare

@huacnlee huacnlee released this 08 Oct 06:02
bb6fc34

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-height list, and container_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

Choose a tag to compare

@huacnlee huacnlee released this 07 Oct 11:44
edbd764

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_analyzer and nightly_coverage cfgs no longer raise unexpected_cfgs warnings.
  • CI installs GTK and WebKitGTK for the linux_webview example.

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

Choose a tag to compare

@huacnlee huacnlee released this 07 Oct 10:36
4787af1

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_webview example in gpui_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

Choose a tag to compare

@huacnlee huacnlee released this 07 Oct 02:46
8e1e198

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

Choose a tag to compare

@huacnlee huacnlee released this 06 Oct 05:44
598306f

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_webview

The 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().