All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- WebSocket: Fixed
ManualUpgradeerror by properly draining request body before upgrade inrustapi-ws. - WebSocket: Enabled
http1::Builder::with_upgrades()inrustapi-coreserver for Hyper 1.0 compatibility. - Examples: Fixed compilation issues in
phase11-demoandgraphql-api. - Examples: Updated
websocketexample with better debug logging.
- Updated READMEs for all crates with comprehensive examples and better structure.
- Improved
Cargo.tomldescriptions and documentation links.
simd-jsonfeature: 2-4x faster JSON parsing when enabled- Stack-optimized
PathParams: UsingSmallVec<[_; 4]>for fewer allocations - Conditional tracing: Logging gated behind
tracingfeature for 10-20% less overhead - Streaming request body: Support for large/unbuffered bodies without full memory buffering
rustapi-jobs: Background job processing- In-memory, Redis, and Postgres backends
- Job queue with retry logic and exponential backoff
- Dead letter queue for failed jobs
- Scheduled and delayed execution
rustapi-testing: Test utilitiesTestServerfor spawning test instancesMatcherfor response body/header matchingExpectationbuilder for fluent assertions
- Audit Logging System in
rustapi-extras- GDPR and SOC2 compliance support
- In-memory and file-based audit stores
- Event/query types with store trait
cargo rustapi watch— Auto-reload on file changescargo rustapi add— Add dependencies or featurescargo rustapi doctor— Check environment health
- Property-based tests with
proptest:- Streaming memory bounds validation
- Audit event completeness
- CSRF token lifecycle
- OAuth2 token exchange round-trips
- OpenTelemetry trace context propagation
- Structured logging format compliance
event-sourcing— CQRS/Event Sourcing demomicroservices-advanced— Multi-binary with Docker + service discoveryserverless-lambda— AWS Lambda integration
- Fixed async handling and error mapping in file writes
- Fixed Redis
zaddcall in job backend - Enabled
r2d2feature for diesel, clarified error types - Removed unused imports across crates
- CORS middleware:
CorsLayerwith fullMiddlewareLayertrait implementation- Support for
CorsLayer::permissive()and custom configuration - Proper preflight request handling
- Origin validation and credential support
- Support for
- Fixed missing
MiddlewareLayerimplementation forCorsLayer - Fixed CI build issues with GitHub Actions runner disk space
0.1.4 - 2026-01-03
#[rustapi_rs::schema]attribute macro for opt-in OpenAPI schema auto-registration
- Internal workspace dependency pins aligned to the workspace version for consistent publishing
- Proof-of-concept example includes a minimal
GET /landing page
0.1.3 - 2026-01-01
- New
rustapi-tooncrate: TOON (Token-Oriented Object Notation) format support- LLM-optimized data serialization format
- Content negotiation via
Acceptheader (application/toon,application/json) Toon<T>extractor and responderToonNegotiate<T>for automatic format selectionLlmResponse<T>for AI-friendly structured responses- OpenAPI integration with TOON schema support
toonfeature flag inrustapi-rsfor opt-in TOON supporttoon-apiexample demonstrating TOON format usage- Improved cookie extraction test for duplicate cookie names
- Updated
rustapi-rsto re-export toon module when feature enabled
0.1.2 - 2024-12-31
skip_pathsmethod for JwtLayer to exclude paths from JWT validationdocs_with_authmethod for Basic Auth protected Swagger UIdocs_with_auth_and_infomethod for customized protected docs
- auth-api example now demonstrates protected docs with Basic Auth
- JWT middleware can now skip validation for public endpoints
0.1.1 - 2024-12-31
- Body size limit middleware with configurable limits
.body_limit(size)builder method on RustApi (default: 1MB)- 413 Payload Too Large response for oversized requests
- Production error masking (
RUSTAPI_ENV=production) - Development error details (
RUSTAPI_ENV=development) - Unique error IDs (
err_{uuid}) for log correlation - Enhanced tracing layer with request_id, status, and duration
- Custom span field support via
.with_field(key, value) - Prometheus metrics middleware (feature-gated)
http_requests_totalcounter with method, path, status labelshttp_request_duration_secondshistogramrustapi_infogauge with version information/metricsendpoint handler- TestClient for integration testing without network binding
- TestRequest builder with method, header, and body support
- TestResponse with assertion helpers
RUSTAPI_DEBUG=1macro expansion output support- Improved route path validation at compile time
- Enhanced route conflict detection messages
- Error responses now include
error_idfield - TracingLayer enhanced with additional span fields
0.1.0 - 2024-12-01
- Core HTTP server built on tokio and hyper 1.0
- Radix-tree based routing with matchit
- Request extractors:
Json<T>,Query<T>,Path<T> - Response types with automatic serialization
- Async handler support
- Basic error handling with
ApiError #[rustapi::get],#[rustapi::post]route macros#[rustapi::main]async main macro
- Automatic OpenAPI spec generation
- Swagger UI at
/docsendpoint - Request validation with validator crate
#[validate]attribute support- 422 Unprocessable Entity for validation errors
#[rustapi::tag]and#[rustapi::summary]macros- Schema derivation for request/response types
- JWT authentication middleware (
jwtfeature) AuthUser<T>extractor for authenticated routes- CORS middleware with builder pattern (
corsfeature) - IP-based rate limiting (
rate-limitfeature) - Configuration management with
.envsupport (configfeature) - Cookie parsing extractor (
cookiesfeature) - SQLx error conversion (
sqlxfeature) - Request ID middleware
- Middleware layer trait for custom middleware
extrasmeta-feature for common optional featuresfullfeature for all optional features