Skip to content

docs(release): 3.4.0 notes - #426

Merged
lesnik512 merged 1 commit into
mainfrom
docs/release-3.4.0
Aug 22, 2026
Merged

docs(release): 3.4.0 notes#426
lesnik512 merged 1 commit into
mainfrom
docs/release-3.4.0

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Release notes for the unreleased work since the 3.3.0 tag: #425 (scope derivation + the compiled context resolver), #424 (docs/architecture removal), #423 (comparative table republish).

Version choice is 3.4.0, and it is worth a look: #425 removes ContextProvider.resolve and makes provider.scope read-only. Both are removals of machinery that was never a designed extension point, which is the same class as the provider-type closure that shipped as a minor in 2.29.0 under a ## Breaking change heading — so this follows that precedent rather than treating it as a major. Say the word if you'd rather it were 4.0.0 or 3.3.1 and I'll rename the file and adjust the framing.

No code changes. just lint-ci clean (planning/index.py --check, planning/links.py both OK).

@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: 361ebe3 Previous: 99c1b16 Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 3063961.670576989 iter/sec (stddev: 2.518632743401784e-8) 2661551.2361682355 iter/sec (stddev: 8.900700263320233e-8) 0.87
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 3143528.3490209747 iter/sec (stddev: 1.9858661089049954e-8) 2709424.491954162 iter/sec (stddev: 9.267446501841643e-8) 0.86
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 23939.143296329705 iter/sec (stddev: 0.000005888833887647335) 23636.730258898464 iter/sec (stddev: 0.000004903387116470051) 0.99
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 18360.325912056644 iter/sec (stddev: 0.000005583139279885764) 17819.255992501494 iter/sec (stddev: 0.000007782069622592584) 0.97
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 429.471515629567 iter/sec (stddev: 0.0000996366099995001) 403.90639386840263 iter/sec (stddev: 0.000048720262476707166) 0.94
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 401.1391309183431 iter/sec (stddev: 0.0000410182775921761) 365.9811438726735 iter/sec (stddev: 0.00020839883886446156) 0.91
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 371.507368920635 iter/sec (stddev: 0.00003556444862453793) 331.9301359790148 iter/sec (stddev: 0.00026775065608392214) 0.89
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 2280.4963363433694 iter/sec (stddev: 0.000018748910964663452) 2232.560424015914 iter/sec (stddev: 0.000035134623207008466) 0.98
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 1705.8937891195235 iter/sec (stddev: 0.00002889546084369682) 1702.8723340999109 iter/sec (stddev: 0.000036653443856347336) 1.00
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 1178.7543554595336 iter/sec (stddev: 0.00003089775385137529) 1170.9010481668545 iter/sec (stddev: 0.00004840752309782305) 0.99
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 754254.9501667524 iter/sec (stddev: 4.651706803810463e-8) 744476.648643634 iter/sec (stddev: 4.920219581006143e-8) 0.99
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 675364.2551789446 iter/sec (stddev: 7.95254268047865e-8) 689216.1654816811 iter/sec (stddev: 2.838341705281566e-8) 1.02
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 2352.504572230266 iter/sec (stddev: 0.000016344317571360954) 2340.793841147439 iter/sec (stddev: 0.000012081117597925936) 1.00
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 62315.03987597284 iter/sec (stddev: 0.0000016828053278879454) 61289.77587398854 iter/sec (stddev: 0.0000019855056985759595) 0.98
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 45949.34245349079 iter/sec (stddev: 0.0000019731338858419234) 45735.78824510214 iter/sec (stddev: 0.0000022288941747460207) 1.00
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 2033095.129123418 iter/sec (stddev: 2.9182938619915903e-8) 2014328.1173343842 iter/sec (stddev: 2.3612239147239873e-8) 0.99
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 3435613.375858038 iter/sec (stddev: 6.806471850482239e-9) 3259325.5660110055 iter/sec (stddev: 9.396166101125413e-9) 0.95
benchmarks/test_guard_resolve.py::test_g3_deep_chain 751813.745964064 iter/sec (stddev: 3.026162118054409e-8) 732707.4851292095 iter/sec (stddev: 3.875451551364374e-8) 0.97
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 392347.281959492 iter/sec (stddev: 1.291228333228367e-7) 398926.8150602975 iter/sec (stddev: 1.2196205029055555e-7) 1.02
benchmarks/test_guard_resolve.py::test_g5_cross_scope 1621948.9922977835 iter/sec (stddev: 3.7835728155078135e-8) 1631096.0635286337 iter/sec (stddev: 2.2244800292348367e-8) 1.01
benchmarks/test_guard_resolve.py::test_g9_context_resolve 824043.190577652 iter/sec (stddev: 2.946188711908947e-8) 842854.2145411115 iter/sec (stddev: 3.174588546140589e-8) 1.02
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 504025.94503623305 iter/sec (stddev: 4.759268974301172e-8) 498938.9688618574 iter/sec (stddev: 6.989942913426486e-8) 0.99
benchmarks/test_guard_resolve.py::test_g18_alias_hop 2498770.9170571747 iter/sec (stddev: 1.0773436374296299e-8) 2319960.2934186044 iter/sec (stddev: 1.4191400383893832e-8) 0.93
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 28091.402156354143 iter/sec (stddev: 0.000003339463299166824) 27982.154511562923 iter/sec (stddev: 0.000004147676652951062) 1.00
benchmarks/test_guard_validate.py::test_g11_validate_wide 17047.411317113092 iter/sec (stddev: 0.000004185207243961972) 17057.513820061897 iter/sec (stddev: 0.000004212995056827875) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@lesnik512
lesnik512 merged commit 4a2c1e9 into main Aug 22, 2026
9 checks passed
@lesnik512
lesnik512 deleted the docs/release-3.4.0 branch August 22, 2026 09: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