You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f4a3d62
Browse filesBrowse the repository at this point in the historyBrowse files
perf(compile): analyze models as soon as their producers finish
Replace wave-by-wave model analysis with a dependency-driven scheduler. A
model is analyzed once every producer shape it binds against is final, so a
slow model no longer holds back unrelated models in the next topological
level. Worker threads serialize Python preparation and projection under one
lock, while self-contained native analysis releases it, so the next ready
batch is prepared while earlier batches run natively. The calling thread
never takes that lock: it only starts and joins the workers, and on an
interrupt or start failure it cancels and joins every started worker before
re-raising.
Each compile catalog now owns one native analysis pool that every compact
analysis and binding batch reuses, instead of building a pool per call.
Compact analysis splits into a catalog-resolving prepare step and a run step
that no longer borrows the catalog, so catalog updates for later batches
proceed while earlier batches run. Spawned drainer tasks replace the pool
broadcast, so a batch no longer needs every pool thread to finish.
Every model sees exactly the producer shapes, cache entries, and changed
upstream signatures it saw under wave scheduling, so compile output does not
depend on completion order. An ordinary analysis error replays the wave
schedule to raise the same first error; an interrupt or other non-Exception
failure always wins and propagates without a replay.
0 commit comments