refactor: extract partial eval loop unrolling - #186
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refactors partial-evaluation static for-loop unrolling by extracting the transformation logic into a dedicated, phase-owned internal mixin module, while keeping PartialEvaluator concrete and slot-based. This aligns with issue #143’s goal of splitting partial_eval.py into smaller, behavior-scoped units without changing the public entrypoint.
Changes:
- Extracted static
for-loop transformation + unrolling intoLoopUnrollingMixin(partial_eval_loops.py) and madePartialEvaluatorinherit it. - Moved compile-time loop-context properties (
loop.*) into the new module (LoopProperties). - Centralized the 200-iteration unroll bound so both loop unrolling and list-comprehension evaluation share the same limit (
MAX_UNROLL).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
src/kida/compiler/partial_eval.py |
Switches PartialEvaluator to inherit loop-unrolling behavior from the extracted mixin and shares the unroll bound with list comprehensions. |
src/kida/compiler/partial_eval_loops.py |
Introduces an internal mixin implementing static for-loop unrolling and compile-time loop.* properties. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PartialEvaluatorslot-only and concrete while sharing the existing 200-item bound with list-comprehension evaluationProgresses #143.
Steward Notes
PartialEvaluatorremains concrete with no instance__dict__, focused and stability suites pass, and isolated free-threaded benchmarks show no regressionVerification
319 passedin the focused partial-evaluation suitemake verify-stability(4,459 passed, 5 skipped)ruff check,ruff format --check, andty checkcleanCollateral