Skip to content

release: v0.6.0 - #200

Merged
ZhuchkaTriplesix merged 73 commits into
mainfrom
dev
Sep 12, 2026
Merged

ZhuchkaTriplesix merged 73 commits into
mainfrom
dev

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

OxyRoute v0.6.0 Release

Highlights

  • Native Rate Limiting: In-memory sharded Token Bucket rate limiter in Rust with configurable strategies (ip, header:<name>, global) on route decorators and routers (@app.get(..., rate_limit="100/minute")).
  • DAG Dependency Resolution: Graph-based dependency resolution with topological sorting and cycle detection at registration time.
  • Adaptive Concurrency Limiting: Adaptive load shedding (AdaptiveConcurrencyLimiter) to protect against memory exhaustion and tail latency degradation.
  • PEP 590 Vectorcall: Zero-dict kwargs allocation on the Python handler hot path.
  • Packed 64B RouteEntry & Contiguous State: L1 cacheline aligned route entries and consolidated state snapshots.
  • OpenAPI 3.1.0: Pydantic v2 JSON Schema alignment, automatic 401/422 responses, and query/header parameter schema declarations.
  • Native WebSockets: Serialized concurrent frame sending and graceful shutdown notifications (1001 Going Away).
  • PEP 561 Type Stubs: Complete py.typed and _oxyroute.pyi stubs.
  • Security & Hardening: StaticFiles directory traversal / symlink escape protections, DBQuery SQL injection guarantees, and panic = "abort" FFI safety.

ZhuchkaTriplesix and others added 30 commits August 26, 2026 20:29
fix(security): prevent path traversal and symlink escape in StaticFiles
ci: add native Rust cargo tests and automated security audit workflow
fix(typing): add PEP 561 py.typed marker and _oxyroute.pyi type stubs
fix(params): schema-aware path parameter coercion to prevent unintended numeric casting
fix(build): set panic = "abort" in Cargo.toml to prevent FFI stack unwinding
feat(dx): auto-infer Pydantic body_model and support flexible parameter names
perf(call): adopt PEP 590 Vectorcall protocol to eliminate PyDict kwargs allocation
perf(cache): pack RouteEntry layout into single 64B cacheline for hot-path metadata
fix(dispatch): restore abi3-py310 compliant call0 and kwargs calling
ZhuchkaTriplesix and others added 29 commits August 27, 2026 12:17
perf(memory): implement thread-local buffer pool for request bodies (#160)
chore(deps): upgrade oxyjwt to >=0.7.0 and drop pyjwt / cryptography
perf(cache): consolidate HotSnapshot atomic refcounts into single Arc<FrozenState> (#149)
fix(observability): ensure access_log_hook executes on unhandled exceptions via try-finally
feat(openapi): align default OpenAPI version to 3.1.0 for Pydantic v2 JSON Schema compatibility
feat(openapi): auto-document 401 Unauthorized and 422 Validation Error responses
…-params

feat(openapi): support query and header parameter schema declarations
…istration (#189)

* feat(di): DAG dependency resolution with cycle detection at route registration (#141)

* perf(bench): add DI/DX overhead comparison benchmark
@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit 5c3cf55 into main Sep 12, 2026
34 checks passed
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