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.
0.10.0 - 2026-03-16
- Serde-based Path extraction:
Path<T>now uses a custom serde deserializer, supportingPath<u64>,Path<(u64, String)>tuples, andPath<MyStruct>structs from a single implementation - Database seeding:
rapina seed load,rapina seed dump, andrapina seed generatecommands behindseed-*feature flags - Snapshot testing:
response.assert_snapshot("name")with automatic UUID/timestamp redaction,--blessmode for updating golden files - RFC 7807 Problem Details: Standardized error responses with configurable
ErrorConfig, per-request scoping viatask_local! - Three-layer router: Static route map for O(1) parameterless lookup, hot cache, and frozen radix trie
- Router benchmarks: Criterion benchmarks for router resolution performance
- Configurable request logging: Verbose mode with header/query/body-size logging, header redaction for sensitive values
--forceflag forimport database: Re-import over existing generated files- Irregular plurals in codegen: Handles words like
status,address,childcorrectly in singularize/pluralize - UUID primary key support in
schema!macro put_namedanddelete_namedconvenience methods on Router- URL shortener example: Full CRUD example with database, migrations, and tests
State<T>wrapped inArc<T>: Removes theClonebound on state types,into_inner()returnsArc<T>- Positional extractor convention: Last handler argument uses
FromRequest(consumes body), all others useFromRequestParts— replaces string-based classification PathParamsbacked bySmallVec: Stack-allocated for up to 4 parameters, zero heap allocation for typical routes- Compression gated behind feature flag:
compressionfeature (enabled by default) - Macro preserves
muton handler arguments: Enables mutable extractors likemut form: Multipart
0.6.0 - 2026-02-22
- Route Auto Discovery: Routes are automatically registered via
inventory— no more manual wiring inmain.rs tomlupgraded to 1.0 (TOML spec 1.1 support)
- Updated
jsonwebtokento 10.3.0 - Updated
ctrlcto 3.5.2 - GitHub Actions: auto-labeler for PRs, welcome message for first-time contributors
- Consolidated Discord links across documentation
0.2.0 - 2025-01-24
- Authentication: JWT authentication with "protected by default" approach
#[public]attribute for public routesCurrentUserextractor for accessing authenticated userAuthConfigfor JWT configuration from environmentTokenResponsehelper for login endpoints
- Configuration: Type-safe config with
#[derive(Config)]macro#[env = "VAR_NAME"]for environment variable binding#[default = "value"]for default valuesload_dotenv()helper for .env files- Fail-fast validation with clear error messages
- Documentation: Full docs site at userapina.com
- Getting started guide
- CLI reference
- Philosophy section
- CLI: New commands
rapina doctorfor health checksrapina routesfor route introspection
- All routes now require authentication by default (use
#[public]to opt-out) - Improved error messages for missing configuration
0.1.0-alpha.3 - 2025-01-15
- OpenAPI 3.0 automatic generation
- CLI tools:
rapina openapi export,rapina openapi check,rapina openapi diff - Breaking change detection for API contracts
- Validation with
Validated<T>extractor - Observability with structured logging and tracing
0.1.0-alpha.2 - 2025-01-10
- Route introspection endpoint (
/__rapina/routes) - Test client for integration testing
- Middleware system (
Timeout,BodyLimit,TraceId)
0.1.0-alpha.1 - 2025-01-05
- Initial release
- Basic router with path parameters
- Typed extractors (
Json,Path,Query,Form,Headers,State) - Standardized error handling with
trace_id - CLI (
rapina new,rapina dev)