docs(release): 3.2.0 notes - #414
Merged
Merged
Conversation
Two correctness fixes (the lost-registration race and the scope restamp) plus four resolve-path trims, and the new ProviderScopeFrozenError that makes this a minor rather than a patch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Benchmark
Details
| Benchmark suite | Current: 216d9fc | Previous: fc19673 | Ratio |
|---|---|---|---|
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type |
2133023.963637814 iter/sec (stddev: 2.422975461995863e-7) |
2418820.2423607428 iter/sec (stddev: 1.663277655705865e-7) |
1.13 |
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry |
2576190.7182825324 iter/sec (stddev: 5.641786060192141e-8) |
2964202.104562959 iter/sec (stddev: 4.1642880752227354e-8) |
1.15 |
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve |
24026.17990285787 iter/sec (stddev: 0.000018846705593852564) |
24833.712407870025 iter/sec (stddev: 0.000025965689466887577) |
1.03 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] |
422.00242649352606 iter/sec (stddev: 0.000041698142197803486) |
488.9751842831509 iter/sec (stddev: 0.00007747863783701524) |
1.16 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] |
385.3508010982798 iter/sec (stddev: 0.0001421926913468757) |
449.05521424423375 iter/sec (stddev: 0.00008722864993746906) |
1.17 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] |
363.9237802291063 iter/sec (stddev: 0.00022906463533201753) |
413.3264083169918 iter/sec (stddev: 0.00008017312634910238) |
1.14 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] |
2168.9265947971153 iter/sec (stddev: 0.0000955641905877905) |
2330.0023942750086 iter/sec (stddev: 0.000024138511354054665) |
1.07 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] |
1573.3438215939018 iter/sec (stddev: 0.00036262135071224883) |
1678.7256055284636 iter/sec (stddev: 0.00042015494893920277) |
1.07 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] |
1108.9340066904858 iter/sec (stddev: 0.00024191285691698238) |
1289.9377908146837 iter/sec (stddev: 0.000037920437280697874) |
1.16 |
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container |
661315.77963282 iter/sec (stddev: 5.485146626957638e-7) |
740771.4672387217 iter/sec (stddev: 2.9035445307617585e-7) |
1.12 |
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope |
640142.525178541 iter/sec (stddev: 4.2262058968812827e-7) |
694374.210029261 iter/sec (stddev: 3.932836996458636e-7) |
1.08 |
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch |
2339.9816108684136 iter/sec (stddev: 0.000021860769276448824) |
2567.923571546199 iter/sec (stddev: 0.000007421195753779969) |
1.10 |
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control |
63124.881010955 iter/sec (stddev: 0.000001830297296662387) |
75199.593055582 iter/sec (stddev: 0.0000010200817052735194) |
1.19 |
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale |
46071.77132768334 iter/sec (stddev: 0.0000018400684776848266) |
49632.649522665895 iter/sec (stddev: 0.000001185455697160579) |
1.08 |
benchmarks/test_guard_resolve.py::test_g1_transient_resolve |
1324659.9393125835 iter/sec (stddev: 3.179451537899988e-7) |
1440852.754582927 iter/sec (stddev: 2.942585074559515e-7) |
1.09 |
benchmarks/test_guard_resolve.py::test_g2_cached_resolve |
3314988.36728875 iter/sec (stddev: 4.95800296436253e-8) |
4003559.907319729 iter/sec (stddev: 2.3954089619570216e-8) |
1.21 |
benchmarks/test_guard_resolve.py::test_g3_deep_chain |
519403.69519291935 iter/sec (stddev: 4.771486460916209e-7) |
581314.9784114554 iter/sec (stddev: 4.618421853034695e-7) |
1.12 |
benchmarks/test_guard_resolve.py::test_g4_wide_resolve |
321177.3795939917 iter/sec (stddev: 7.299687327453724e-7) |
349900.38037258486 iter/sec (stddev: 3.325126626484791e-7) |
1.09 |
benchmarks/test_guard_resolve.py::test_g5_cross_scope |
1164423.8132090962 iter/sec (stddev: 4.7315489606406613e-7) |
1227235.4257278992 iter/sec (stddev: 3.270276367204748e-7) |
1.05 |
benchmarks/test_guard_resolve.py::test_g9_context_resolve |
642448.1201509795 iter/sec (stddev: 4.383453879755121e-7) |
774335.7532414246 iter/sec (stddev: 3.93484652701521e-7) |
1.21 |
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve |
395238.3098679539 iter/sec (stddev: 3.9829612948691943e-7) |
447972.19490183285 iter/sec (stddev: 4.021921160831471e-7) |
1.13 |
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain |
26631.36034783455 iter/sec (stddev: 0.000005160223446403646) |
29453.578970071303 iter/sec (stddev: 0.0000031436664895165393) |
1.11 |
benchmarks/test_guard_validate.py::test_g11_validate_wide |
16927.45088088831 iter/sec (stddev: 0.000005189385610799431) |
17570.10640837065 iter/sec (stddev: 0.0000038027148755389238) |
1.04 |
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.
Release notes for 3.2.0, to land before the tag.
Why
29 commits since
3.1.2with nothing released, including two defects that could each make a container answer incorrectly rather than fail.ProviderScopeFrozenErroris a new public exception, so this is a minor bump.Design
Notes only --
planning/releases/3.2.0.md, used verbatim as the GitHub Release body. Grouped as Fix / Behaviour changes / Performance / What did not change / Downstream / Internals, following3.1.2.md. Every number is quoted from the measurement recorded in the originating commit, each against its own immediate baseline rather than cumulatively.Non-goals
Does not regenerate the comparative table in
docs/introduction/performance.md, which still reports 3.1.2 and predates this release's four trims. That needsjust bench-reportwith the rival deps installed and is its own PR; the notes say so explicitly under Internals rather than leaving it silent.Verification
just test-ci: 466 passed, 100%% coverage.just lint-ci: clean, including the planning validator and the Markdown link checker.Before merging
just lint-ciandjust test-cipass.