compile() re-calls dyn Node::schema() (fresh Vec alloc) at each resolve site; duplicates bootstrap's kind-derivation #25
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From the 0012 cycle-close audit (commit
a4fb5d7). The inliner in crates/aura-engine/src/blueprint.rs re-callsdyn Node::schema()at each kind/field resolve site (lines ~84,87,224,273,311), each allocating a fresh NodeSchema Vec, and re-derives kind information thatHarness::bootstrapalready owns. This is compile-time only (the bootstrap phase, NOT the run loop), so there is no C7 hot-path cost and C1 is untouched — but it duplicates derivation logic and allocates per resolve. Low priority. Natural to revisit when the C23 optimisation passes land (they will want a cached, hashable per-node identity anyway, per the spec's forward-looking notes).Resolved by cycle 0024 (
1b39093). Node::schema() on the built node is removed; lower_items() now gathers each primitive's signature exactly once from PrimitiveBuilder::schema() into FlatGraph.signatures (blueprint.rs:587), the resolve sites (rewrite_edge / output resolution) read that already-gathered Vec by borrow, and Harness::bootstrap consumes the carried signatures instead of re-deriving kinds. The per-resolve-site dyn-schema re-call and the bootstrap-derivation duplication this issue named no longer exist.