Skip to content

Add owned YED evaluators and a direct typed native boundary - #300

Merged
Hancapo merged 2 commits into
mainfrom
perf/yed-typed-evaluation-boundary
Sep 8, 2026
Merged

Hancapo merged 2 commits into
mainfrom
perf/yed-typed-evaluation-boundary

Conversation

@Hancapo

@Hancapo Hancapo commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add immutable YedEvaluator snapshots from Yed.compile(...), retaining the public typed result, unresolved-expression/native-attachment diagnostics and explicit caller-owned variables.
  • Pass typed input values directly to the native boundary and build final Vector4 outputs there. Matching output/final-track values share immutable objects within one frame.
  • Preserve a fresh native frame per evaluation and release the GIL during VM work. Compiled evaluators retain no mutable YED or skeleton.
  • Correct the mutable convenience cache to compare full executable/default content, including in-place operand and skeleton edits, rather than incomplete object identities and lengths.

Verification

  • Public/compiled equivalence tests cover typed and iterable inputs, diagnostics, detached lifetime, in-place edits, defaults, stateless seeks, concurrent actors and explicit variable persistence.
  • Uninstrumented synthetic evaluation measured 1.039 ms/frame for the pre-change public path and 0.480 ms/frame for the compiled evaluator, about 2.2x faster. Current mutable evaluation costs 1.280 ms/frame because it now checks complete source content. Repeated playback must compile once to obtain the improvement.
  • The supplied profile identifies substantial conversion and repeated expression-resolution work; overlapping profile totals are not added together or translated into FPS claims.

Based on #299. No consumer code or installed packages changed. No merge or release requested for this stack.

@Hancapo
Hancapo changed the base branch from feat/ycd-compiled-clip-playback to main September 8, 2026 23:23
@Hancapo
Hancapo merged commit 28f26e7 into main Sep 8, 2026
2 checks passed
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