Skip to content

docs(release): 3.2.0 notes - #414

Merged
lesnik512 merged 1 commit into
mainfrom
docs/release-3.2.0
Aug 3, 2026
Merged

docs(release): 3.2.0 notes#414
lesnik512 merged 1 commit into
mainfrom
docs/release-3.2.0

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Release notes for 3.2.0, to land before the tag.

Why

29 commits since 3.1.2 with nothing released, including two defects that could each make a container answer incorrectly rather than fail. ProviderScopeFrozenError is 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, following 3.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 needs just bench-report with 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

  • Behaviour changed? No code in this PR.
  • Rejected an alternative? None.
  • Found real work you are not doing now? The stale comparative table -- stated under Non-goals and in the notes.
  • just lint-ci and just test-ci pass.

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>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@lesnik512
lesnik512 merged commit bb8794c into main Aug 3, 2026
9 checks passed
@lesnik512
lesnik512 deleted the docs/release-3.2.0 branch August 3, 2026 10:30
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