docs(release): 2.29.0 notes — the compiled resolver#342
Merged
Conversation
Cover the 2.28.0->2.29.0 backlog: the single-path compiled resolver (#334) and its measured perf, the wiring-plan memoization (#326), the three correctness fixes (#340 ContextProvider-via-kwargs default, #321 NoneType default/nullability, #320 validate traverses kwargs=), and the closed provider set under an explicit breaking-change heading (per planning/decisions/2026-07-17-custom-providers-retracted.md, the release notes carry that warning, not the docs). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Benchmark
Details
| Benchmark suite | Current: 283355d | Previous: 1f41fb6 | Ratio |
|---|---|---|---|
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container |
527419.7507204997 iter/sec (stddev: 0.0000420993829727779) |
394943.7980686877 iter/sec (stddev: 0.00006574871089200236) |
0.75 |
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle |
94566.31885239917 iter/sec (stddev: 0.000010031414260362924) |
73178.6926741399 iter/sec (stddev: 0.000013030541070699313) |
0.77 |
benchmarks/test_guard_resolve.py::test_g1_transient_resolve |
1555931.403746593 iter/sec (stddev: 3.904094774511056e-7) |
1183710.4709005877 iter/sec (stddev: 9.019328609723592e-7) |
0.76 |
benchmarks/test_guard_resolve.py::test_g2_cached_resolve |
2947435.1560046095 iter/sec (stddev: 3.88152271338114e-8) |
2253746.2547900085 iter/sec (stddev: 1.9784401491421818e-7) |
0.76 |
benchmarks/test_guard_resolve.py::test_g3_deep_chain |
658692.5057065138 iter/sec (stddev: 3.3584044376541014e-7) |
501203.53868838586 iter/sec (stddev: 5.442464126348895e-7) |
0.76 |
benchmarks/test_guard_resolve.py::test_g4_wide_resolve |
402441.63245942234 iter/sec (stddev: 4.1615539390337864e-7) |
314790.8661277014 iter/sec (stddev: 7.618119698663759e-7) |
0.78 |
benchmarks/test_guard_resolve.py::test_g5_cross_scope |
1413845.457158623 iter/sec (stddev: 2.9427872085648073e-7) |
1039052.0461773115 iter/sec (stddev: 6.144906544265567e-7) |
0.73 |
This comment was automatically generated by workflow using github-action-benchmark.
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.
Draft of
planning/releases/2.29.0.md, the verbatim body for the 2.29.0 GitHub Release. Covers the full 2.28.0→2.29.0 backlog.Headline
Fixes
ContextProviderviakwargs={...}now honors the creator default (theContextValueNoneWarningon optional-Requestcreators).NoneTypeparams keep their default and nullability.validate()traverses providers supplied viakwargs=.Breaking change
AbstractProvider/FactoryraisesTypeErrorat first resolve. The notes carry this warning under an explicit heading, perplanning/decisions/2026-07-17-custom-providers-retracted.md.just check-planningpasses. Tagging/publishing stays with the maintainer — this PR only lands the notes file.🤖 Generated with Claude Code