Make the data model use Item and List types universally, with nodes authored as rank-polymorphic kernels#4335
Make the data model use Item and List types universally, with nodes authored as rank-polymorphic kernels#4335Keavon wants to merge 161 commits into
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a major refactoring of the node graph's type system, moving from a list-based rank system to a more robust Item<T>/List<T> rank-0/rank-1 structural type system. It includes significant changes to node definitions, input adapters, and migration logic to support this new structure, alongside performance optimizations for raster image processing in nodes like dehaze, sample_image, and combine_channels by avoiding unnecessary data cloning.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
All reported issues were addressed across 120 files
Confidence score: 5/5
- Safe to merge after the addressed issues were fixed.
Not reviewed (too large): node-graph/nodes/vector/src/vector_nodes.rs (~2,115 lines) - if these are generated or fixture files, add them to ignored paths to exclude them from future reviews.
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
!build (Run ID 29391783747) |
Wasm: 34.55 MB — JS: 0.44 MB — CSS: 0.09 MB — Fonts: 0.30 MB — Images: 0.09 MB — All Assets: 35.48 MB |
Performance Benchmark Results
|
|
The expected 6.16 MB build size increase from doubling the monomorphizations should be temporary once we can move the dual List-and-Item implementations from the macro to deeper in the compiler in the future. Instruction counting based metrics look worse than expected, however my real-world benchmarks show a frame rate drop from a consistent 28.8 to 27.6 FPS, which is an acceptable 4%. Tested using Chrome and this file in master and this branch. Since this PR must meet its deadline, the above can be recovered through future optimizations subsequent to this landing. |
There was a problem hiding this comment.
All reported issues were addressed across 15 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
Performance Benchmark Results
|
…em<T> primary input
…ing trait boilerplate
…pters at construction
…ked value materialization
…ersion from standard rows
…and rename the rank adapter identifiers
…Choice default hijacking every List<Graphic> disconnect
…e no-primary sentinel
…nd Empty Image color inputs
…written Monitor row
…h, and Omit Element to Remove at Index
…ing the Sort Key node
…ement TypeIds survive to default-literal parsing
…-paint migration, quantize List rows, and other smaller issues
… speeding up cached evaluation
4e3a772 to
a221822
Compare
Performance Benchmark Results
|
Closes #3779.
Bonus: Closes #2047. Closes #4239.