Skip to content

Move composition logic from Stage to compose#47

Merged
mxpv merged 5 commits intomainfrom
refactor
Apr 7, 2026
Merged

Move composition logic from Stage to compose#47
mxpv merged 5 commits intomainfrom
refactor

Conversation

@mxpv
Copy link
Copy Markdown
Owner

@mxpv mxpv commented Apr 7, 2026

  • Moves composition logic to ./compose
  • Removes bunch of clones.

mxpv added 5 commits April 7, 2026 11:59
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
Extract prim index building, field resolution, and LIVERPS arc handling
from Stage into PrimIndex::build() and PrimIndex::resolve_field().
Stage now delegates to these methods, keeping only caching, the query
API, and traversal.

Add LayerData type alias for Box<dyn AbstractData>.

Reduce allocations: use Cow for prim path in arc resolution, remove
identity replace_prefix call in add_remapped_nodes, unify reference and
payload handling via add_arc_nodes to avoid intermediate clones, return
HashMap from resolve_variant_selections, and replace cloning prim index
cache with update_index + borrow pattern.
Move prim index, arc type, and find_layer tests from stage to
compose/prim_index where the implementation now lives. Stage tests
retain only the public API assertions (field resolution, children,
traversal).
Use Cow to avoid allocations in the common prim field resolution path.
Property fields pass a suffix that gets appended per-node; prim fields
pass None and borrow the node path directly.
@mxpv mxpv merged commit 5dc462c into main Apr 7, 2026
10 checks passed
@mxpv mxpv deleted the refactor branch April 7, 2026 19:37
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