Releases: rust-dd/tako
tako-v.0.6.1
tako-v.0.6.0
tako-v.0.6.0
Features
- Signals system + examples (#11)
- Metrics plugin
- State extractor, protocol version guard
- Automatic fallback port if requested port is unavailable
Fixes
- Updated CORS defaults
- Stable global middleware execution
- Naming/visibility cleanups
- Import/module export fixes
- Misc feature-flag fix
Refactors / Internals
- Switch to
http/http-body - Replace
IncomingwithTakoBody - Remove lifetimes from header map / path types
- Introduce internal
RwLockusage - Version bumps + doc updates
Migration notes
- Update body types + imports to
http/http-body - Replace
IncomingwithTakoBody - Adjust code using header/path lifetimes
- Revisit CORS + middleware behavior if relying on old defaults
Full Changelog: tako-v.0.5.0...tako-v.0.6.0
tako-v.0.5.0
Release notes
- Built in GraphQL support using
async-graphql - Add more examples
- Some performance updates
Full Changelog: tako-v.0.4.1...tako-v.0.5.0
tako-v.0.4.1
Full Changelog: tako-v.0.4.0...tako-v.0.4.1
tako v.0.4.0
Tako v0.4.0
Tako v0.4.0 focuses on more ergonomic handler definitions and some quality-of-life improvements around plugins and responders
Added
-
Extractor-based handlers – Handlers can now take extractors directly in their parameter list (Axum-style), instead of manually calling extractors on a mutable
Request. -
anyhow::Result<T>as aResponder– You can now returnanyhow::Result<T>from handlers whereT: Responder; errors are converted into 500 responses. -
Route-level plugins – Plugins (e.g. rate limiting, middleware-like logic) can be attached per-route.
-
Re-exports –
hyper::header(and related types) are re-exported for easier use from Tako. -
Internal refactors and logging improvements around the rate limiter and plugins.
Breaking change: handler signatures
Previously, handlers typically looked like this:
// Tako 0.3.x
use tako::{Request, Responder};
pub async fn create_user(mut req: Request) -> impl Responder {
// manually run extractors on &mut req
// e.g. Json::extract(&mut req).await, etc.
}In 0.4.0, handlers are expected to use extractors directly in the function parameters, instead of working off a mut Request:
// Tako 0.4.0
use tako::{extractors::Json, Responder};
pub async fn create_user(
Json(payload): Json<CreateUser>,
) -> impl Responder {
// `payload` is already extracted here
}You can mix and match any supported extractors in the signature (e.g. Json<T>, path/query extractors, etc.), and still return any type that implements Responder. If you really need the raw request, you can add a corresponding extractor for it as one of the parameters, but the recommended style is to keep handler signatures extractor-based and avoid pub async fn handler(mut req: Request) going forward.
Full Changelog: tako-v.0.3.2...tako-v.0.4.0
tako v.0.3.2
Full Changelog: tako-v.0.3.0...tako-v.0.3.2
tako v.0.3.0
🐙 Tako 0.3.0
🚀 What’s New
- Switched to
matchitrouter – Faster, more scalable route matching. - Protobuf support – Handle binary payloads alongside JSON.
- Auth example + fix – Improved token verification logic.
- Memory optimization – Uses
Weakrefs to reduce overhead. - File stream utility – Stream large files efficiently over HTTP.
- HTTP/2 WebSocket example – Showcases modern WS usage.
- Docs cleanup – Simplified README and examples.
👉 Changelog: tako-v.0.2.4...tako-v.0.3.0
tako v.0.2.4
🐙 Tako 0.2.4
🚀 What’s New
-
SIMD-accelerated JSON (de)serialization
- Significant performance boost for heavy JSON payloads using SIMD instructions under the hood.
-
Refactored extractors
- Cleaner, more modular design — easier to use and extend.
- Simplified API for creating custom extractors.
- Better error handling.
- Additional internal optimizations to reduce latency and allocations.
Full Changelog: tako-v.0.2.3...tako-v.0.2.4
tako v.0.2.3
🐙 Tako 0.2.3
🚀 What’s New
- Transparent response compression
- Streaming middleware negotiates gzip · brotli · deflate · zstd on-the-fly.
- Fresh example & benchmark included.
- Static file serving
- URL-encoded form extractor
Form<T>for effortlessapplication/x-www-form-urlencodedparsing. - Stream engine refactor — simpler state machine, no manual waker; ~12 % throughput boost in benchmarks.
🐛 Fixes & Docs
- Multipart example and plugin-init race conditions fixed.
- Added docs for deflate compression and form extractor.
- README, feature table and benchmarks refreshed; dead feature-flags removed.
Full Changelog: tako-v.0.2.2...tako-v.0.2.3
tako v.0.2.2
🐙 Tako 0.2.2
🚀 What’s New
- Multipart form parsing via new
multipartfeature (uses multer + uuid), supportsUploadedFile(disk) andInMemoryFile(RAM), plus typed extraction withTakoTypedMultipart<T, F>. - Built-in HTTP client (
TakoClient,TakoTlsClient) for simple outbound requests, enabled withclient/tlsfeatures (uses rustls, no OpenSSL). - Basic Auth extractor (
extractors::basic::Basic) for direct username/password access in handlers without middleware. - Body size limiter middleware with configurable max size (static value or closure), returns 413 on overflow, 10 MiB default.
- Extractor trait rewrite:
FromRequest,FromRequestParts,FromRequestMutnow sync; async versions (AsyncFromRequest*) remain available. - Streaming support:
TakoBody::from_stream&try_from_streamfor building stream-based responses (e.g., SSE or proxy). - Router composition:
Router::merge(other)merges routers and prepends middlewares automatically. - New helpers:
IntoMiddleware,StaticHeadersfor concise responder definitions. - New examples: with-state, multipart, streams.
Full Changelog: tako-v.0.2.1...tako-v.0.2.2