Changelog
All notable changes to this project are documented here. The format follows Keep a Changelog, and the project adheres to Semantic Versioning.
#Unreleased
#Added
- Opt-in authorization:
Authorities(roles and permissions of an identity),Policy<T>and theAuthorized<T, P>extractor, which rejects with401without an identity and403when the policy fails. macrosfeature with the#[authorize(..)]handler attribute, in the spirit of Spring's@PreAuthorize:has_role,has_any_role,has_all_roles,has_permission,has_any_permission,has_all_permissions,authenticated(),check(fn), combined with&&,||and!. New cratekerniq-macros.Require<T>middleware for router-level role and permission rules (Require::<User>::role("ADMIN"),any_role,permission,check,policy::<P>(),.and,.or,.message), the counterpart of Spring Security'srequestMatchers(..).hasRole(..).- Guide for connecting databases and message brokers
(
docs/integrations.md): PostgreSQL/MySQL/SQLite withsqlx, Redis, MongoDB, Kafka and RabbitMQ, with a summary in the README. - Claude Code skill for building services with Kerniq
(
skills/kerniq-server/SKILL.md), with install instructions in the README. examples/error-handling: domain errors mapped withFrom,?, error codes and details, internal errors that never leak, headers such asRetry-After, and a custom fallback.MIGRATION.md, a guide to upgrading across breaking releases.#![warn(missing_docs)]in every library crate, and docs for the variants ofRequireFutureandRateLimitFuture.
#0.1.0 - 2026-11-07
First release.
#Added
Appbuilder: route registration for every standard HTTP method, typed state (App<S>), configuration, middleware, fallbacks, background tasks, shutdown signals;run,serve,run_blocking,into_axum_router.Routerwith prefixes, groups, mounting (mount,merge,mount_axum), nested fallbacks, route introspection, and:id/{id}path syntax.- Error model: a single
Errortype with a JSON envelope, constructors for common statuses, details, headers, logged-but-hidden sources, andResultExt/OptionExt. - Extractors with JSON rejections:
Path,Query,Json,Header<T>(UserAgent,ContentType,Authorization,BearerToken,XRequestId),ValidatedJson,ValidatedQuery; responsesCreated,NoContent. - Deferred, ordered middleware composition (first declared = outermost) for
both apps and routers;
Middlewaretrait andTowerLayeradapter. - Middleware:
Logger,RequestId,Timeout,BodyLimit,ConcurrencyLimit,Cors,Compression,SecurityHeaders,RateLimit,Auth/Authenticator/Identity,Metrics(Prometheus format). - Server runtime: Hyper HTTP/1 + HTTP/2 accept loop with connection limits,
header read timeout,
TCP_NODELAY,ConnectInfo, graceful shutdown with bounded drain, OS signal handling,BackgroundTasks. ServerConfigfrom code,KERNIQ_*environment variables and TOML files.- WebSocket support (Axum), OpenAPI documents and Swagger UI (Utoipa).
kerniqCLI:new(basic, rest, modular, production templates),dev,build,check,test.- Twelve runnable examples, guides in
docs/, and benchmarks against native Axum (criterion, allocation counts, real-HTTP load test).