What's Changed
- ci: pin CodSpeed walltime to one core and skip it for tags by @jameswinegar in #432
- test: sync the concurrent thread-affinity requests with a thread barrier by @jameswinegar in #435
- refactor: remove dead branches from the middleware compiler by @jameswinegar in #425
- test: run mutmut without the two tests that read the repository layout by @jameswinegar in #416
- fix: a dependency gets the request parts that it reads by @jameswinegar in #417
- fix: count every comprehension over a QuerySet as ORM work, and kill the analysis mutants by @jameswinegar in #418
- test: make the Rust prebinding tests able to fail by @jameswinegar in #429
- test: kill the surviving mutants of the middleware compiler by @jameswinegar in #426
- fix: a renamed sequence struct field lists only its wire key by @jameswinegar in #422
- fix: reject a trusted proxy entry with an IPv6 zone ID by @jameswinegar in #424
- fix: an auth entry that is not a backend stops registration by @jameswinegar in #423
- fix(security): File(allowed_types=...) takes only an iterable of MIME type strings by @jameswinegar in #428
- fix: bind the server port before the event loop thread starts by @jameswinegar in #437
- fix: a File() max_size limits only its own file part by @jameswinegar in #420
- fix(security): apply File() constraints by the multipart part name by @jameswinegar in #419
- fix: @skip_middleware("*") skips CORS, rate limiting and compression by @jameswinegar in #421
- fix: @skip_middleware skips Python middleware by name by @jameswinegar in #427
- fix: fork-safe database connections, idle pool release and recovery from a dead connection by @jameswinegar in #431
- docs: fix the skip_middleware("*") upgrade example and merge two dev reload entries by @jameswinegar in #440
- test: kill the mutants that survived on master after #416 to #440 by @jameswinegar in #441
- test: kill the cargo-mutants survivors in bolt-core by @jameswinegar in #442
- fix: bound chunked multipart bodies, and rate-limit unknown-kid JWKS fetches by @jameswinegar in #445
- fix: a URL-encoded form body has 1000 fields or fewer by @jameswinegar in #448
- fix: the periodic JWKS refresh runs on a background thread by @jameswinegar in #451
- test: wait for both workers before the fork-safety burst by @jameswinegar in #452
- fix: path and query parameters each have their own map of types by @jameswinegar in #444
- perf: a handler with only the request parameter takes the sync dispatch by @jameswinegar in #443
- perf: prebuilt JWT HMAC keys, vectorized header check, and three request-path cuts by @jameswinegar in #447
- fix: a QuerySet from a helper loads on the ORM pool on every fast path by @jameswinegar in #450
- fix: a QuerySet from a helper loads on the ORM pool on a per-status route by @jameswinegar in #453
- fix: route middleware reaches class view methods and nested mounts by @jameswinegar in #454
- fix: a class dependency with new or a metaclass call gets every part by @jameswinegar in #455
- fix: pooled connections and worker shutdown after an error by @jameswinegar in #456
- chore: update ruff, test tooling and CI actions by @jameswinegar in #457
- chore: update the Rust toolchain to 1.99.1 by @jameswinegar in #458
- fix: django-bolt version works after pip install by @jameswinegar in #460
- feat: add BoltAPI(error_formatter=...) for framework errors by @FarhanAliRaza in #446
- feat: show the error body of error_formatter in the OpenAPI schema by @jameswinegar in #461
- chore: update the test dependencies to their new majors by @jameswinegar in #463
- chore: update the runtime dependencies and pydantic by @jameswinegar in #469
- chore: refresh the Rust and Python runtime dependency locks by @jameswinegar in #462
- chore: update pyo3 and pyo3-async-runtimes to 0.30 by @jameswinegar in #464
- chore: update jsonwebtoken, actix-multipart, actix-files and other Rust majors by @jameswinegar in #465
- fix: runbolt stops each request lane before Python exits by @jameswinegar in #466
- fix: only trusted proxies set the scheme; build_absolute_uri() checks ALLOWED_HOSTS by @jameswinegar in #459
- fix: keep a declared 422 in the OpenAPI schema and "errors" a list in problem_details by @jameswinegar in #467
- fix: update vulnerable dependencies and use GitHub-hosted CodSpeed runners by @FarhanAliRaza in #470
Full Changelog: v0.12.0...v0.13.0