Skip to content

[Feature] Add missing DisplayList API - #864

Merged
Kyle-Ye merged 3 commits into
mainfrom
feature/display_list
May 16, 2026
Merged

[Feature] Add missing DisplayList API#864
Kyle-Ye merged 3 commits into
mainfrom
feature/display_list

Conversation

@Kyle-Ye

@Kyle-Ye Kyle-Ye commented May 16, 2026

Copy link
Copy Markdown
Member

Summary

  • Implement missing DisplayList APIs audited against SwiftUICore 6.5.4 Hopper assembly.
  • Add aggregate cache handling for properties across init/append/transform paths.
  • Implement traversal helpers for identities and RB display lists inline in DisplayList, matching the latest forEachIdentity((Identity, inout Bool) -> Void) -> Bool ABI.
  • Add reserveCapacity, translate, version, nextUpdate, and explicit equality behavior.

@augmentcode

augmentcode Bot commented May 16, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR fills in missing pieces of the core DisplayList API to better match SwiftUICore 6.5.4 behavior.

Changes:

  • Updates audit marker for DisplayList.swift to 6.5.4.
  • Implements list construction and mutation paths: init(Item), append, append(contentsOf:), and reserveCapacity, while maintaining aggregate features/properties caches.
  • Adds transform to mutate items and recompute cached aggregates, and translate(by:version:) to offset item geometry and advance item versions.
  • Adds a computed version across all items and keeps nextUpdate(after:) behavior intact.
  • Introduces traversal helpers forEachIdentity and forEachRBDisplayList for identity/RB list discovery through nested display lists.
  • Defines explicit DisplayList == to compare items plus cached aggregate state.
  • Implements DisplayList.Item.properties aggregation across flattened content, effects (including masks and interpolator layers), and states.
  • Wires interpolator-related property aggregation through new properties overrides/forwarders on interpolator-layer structures.
  • Removes a placeholder properties implementation from DisplayListPrinter now that it’s implemented on DisplayList.Item.
  • Adds unit tests validating property propagation for property effects, masks, flattened content, and states.

Technical Notes: The change centers on keeping features and properties caches consistent across init/append/transform paths and enabling traversal of nested structures for identity/RB-list enumeration.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@codecov

codecov Bot commented May 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 27.43363% with 82 lines in your changes missing coverage. Please review.
✅ Project coverage is 25.73%. Comparing base (32b3832) to head (aa5dac5).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...enSwiftUICore/Render/DisplayList/DisplayList.swift 27.43% 82 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             main     #864       +/-   ##
===========================================
+ Coverage   13.74%   25.73%   +11.98%     
===========================================
  Files         637      677       +40     
  Lines       41167    47008     +5841     
===========================================
+ Hits         5660    12099     +6439     
+ Misses      35507    34909      -598     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Kyle-Ye
Kyle-Ye merged commit e14c750 into main May 16, 2026
7 of 8 checks passed
@Kyle-Ye
Kyle-Ye deleted the feature/display_list branch May 16, 2026 15:12
@Kyle-Ye Kyle-Ye added area: rendering DisplayList, render backends, renderer hosts, drawing, and effects. type: feature New API, behavior, platform support, or user-facing capability. labels May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: rendering DisplayList, render backends, renderer hosts, drawing, and effects. type: feature New API, behavior, platform support, or user-facing capability.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant