Skip to content

chore: Allow compatible gpui-fast dependency updates - #47

Merged
huacnlee merged 1 commit into
mainfrom
fix/compatible-release-dependencies
Oct 8, 2026
Merged

huacnlee merged 1 commit into
mainfrom
fix/compatible-release-dependencies

Conversation

@huacnlee

@huacnlee huacnlee commented Oct 8, 2026

Copy link
Copy Markdown
Member

Summary

cargo update -p gpui-fast currently cannot advance the core while a locked platform package requires its exact old version. Generate caret sibling requirements (for example ^0.1.6) instead, and make publication validation enforce those requirements. Support snapshot pins remain unchanged.

Add release tests and run them in release CI. The Cargo regression starts with core/macros/platform at 0.1.5, introduces core/macros 0.1.6, updates only gpui-fast, and confirms platform stays at 0.1.5 with a single shared core type that compiles. Also cover version boundaries and rejection of exact pins.

Existing registry versions are immutable. Consumers must first update the full package set to a release containing this change; subsequent compatible core updates can use a single package selector. Breaking changes require a new compatibility series.

Test Plan

  • bun test script/release.test.ts: 3 tests passed (15 assertions); confirmed regression fails with the old generator.
  • bun script/prepare-release.ts --tag v0.1.6 and bun script/publish-release.ts: all nine generated packages passed package-content and dependency-order validation; no upload.
  • python3 script/check-upstream: 0 violations.
  • cargo fmt -p gpui -p gpui_perf -- --check and git diff --check: passed.
  • Full backend compilation and publication rehearsal are covered by release CI; not run locally. No Rust source changes.

Co-authored-by: Codex <codex@openai.com>
@huacnlee huacnlee changed the title fix: allow compatible gpui-fast dependency updates chore: Allow compatible gpui-fast dependency updates Oct 8, 2026
@huacnlee
huacnlee merged commit 5ea0f5b into main Oct 8, 2026
7 of 8 checks passed
@huacnlee
huacnlee deleted the fix/compatible-release-dependencies branch October 8, 2026 09:56
trancong12102 added a commit to aislopware/gpui-fast that referenced this pull request Oct 9, 2026
Takes longbridge#44 (chat transcript lists stay composited on their scroll layers),
longbridge#46 (layout panics and stale rendering in view splices), longbridge#47 (caret
sibling requirements in releases) and longbridge#49 (Taffy 0.14 with MeasuredTaffy).
Leaves out longbridge#41, longbridge#42 and longbridge#43, upstream's window composition for X11 and
wgpu, as the fork keeps its own composition (as in ed16b23).

Conflicts:
- Cargo.lock: ours, re-resolved for taffy 0.14 (no gtk/wry).
- docs/upstream-sync.md: ours plus upstream's Taffy 0.14 entry; the
  composition entry stays out.
- gpui_perf/Cargo.toml: ours (no linux_webview, no webview deps).
- gpui_perf/src/runner.rs: both scroll scenario lists.
- gpui_macos/src/fast/composition.rs, gpui_linux x11/window.rs and
  client.rs, the three composition.rs files, README, ci.yml: ours.
- fast/dependencies.rs: ours (interned, sorted states, Checked) with longbridge#44's
  shared read logs and dependencies_so_far, its states interned as ours.
- fast/layers/invalidate.rs: longbridge#44's OwnerChange and render_dependencies;
  with_own_rebuild keeps our rebuild ranges and note_rebuild guard and
  falls back on longbridge#44's rendering_since.
- fast/layers/lists.rs: both row fields (fades, reads); our row scene
  insertion; drawn_alike over fast::scene::operations.
- fast/layout.rs: both retention fields (root_phases; pending_replays,
  list_rows).
- fast/layout_key.rs: longbridge#44's list row hooks with our fast_retention().
- fast/retained.rs: both state fields; note_rebuild and note_rendering
  both called; recording.rendered before our place_root.
- fast/splice.rs: ours (splice_gaps, deferred_out_of_date, kept_layout,
  Checked) with longbridge#46's layout_reaches guard and offset-read checks for the
  view, its gaps and its deferred draws; render_dependencies copied.
- fast/tests/retained.rs: both sides' tests.
- fast/tests/layers_lists.rs: our outside-write test now checks the
  frame draws as without layers (under longbridge#44 the rows render again on a
  composited frame instead of demoting).
- gpui_perf chat.rs: momentum_phase for our ScrollWheelEvent.

cargo test -p gpui --features test-support --lib: 764 passed.
gpui_perf --headless --verify: 72 checks identical.
settings-toggle (retained): 61.75M -> 23.60M instructions per frame,
1735 -> 25 measure calls, layout 4.2 ms -> 1.5 ms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant