Skip to content

Releases: rust-dd/tako

tako-v.0.6.1

30 Nov 10:43

Choose a tag to compare

What's Changed

  • feat: zero copy extractor by @dancixx in #12
  • feat: Fix build on FreeBSD by updating jwt-simple to use "pure-rust" by @yonas in #13
  • chore: Format fixes via cargo fmt. by @yonas in #15

New Contributors

  • @yonas made their first contribution in #13

Full Changelog: tako-v.0.6.0...tako-v.0.6.1

tako-v.0.6.0

17 Nov 15:03

Choose a tag to compare

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 Incoming with TakoBody
  • Remove lifetimes from header map / path types
  • Introduce internal RwLock usage
  • Version bumps + doc updates

Migration notes

  • Update body types + imports to http/http-body
  • Replace Incoming with TakoBody
  • 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

11 Nov 23:15

Choose a tag to compare

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

09 Nov 10:47

Choose a tag to compare

tako v.0.4.0

07 Nov 00:36

Choose a tag to compare

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 a Responder – You can now return anyhow::Result<T> from handlers where T: Responder; errors are converted into 500 responses.

  • Route-level plugins – Plugins (e.g. rate limiting, middleware-like logic) can be attached per-route.

  • Re-exportshyper::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

15 Aug 07:12

Choose a tag to compare

tako v.0.3.0

26 Jul 16:35

Choose a tag to compare

🐙 Tako 0.3.0

🚀 What’s New

  • Switched to matchit router – Faster, more scalable route matching.
  • Protobuf support – Handle binary payloads alongside JSON.
  • Auth example + fix – Improved token verification logic.
  • Memory optimization – Uses Weak refs 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

14 Jul 23:49

Choose a tag to compare

🐙 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

10 Jul 16:19

Choose a tag to compare

🐙 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 effortless application/x-www-form-urlencoded parsing.
  • 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

05 Jul 23:37

Choose a tag to compare

🐙 Tako 0.2.2

🚀 What’s New

  • Multipart form parsing via new multipart feature (uses multer + uuid), supports UploadedFile (disk) and InMemoryFile (RAM), plus typed extraction with TakoTypedMultipart<T, F>.
  • Built-in HTTP client (TakoClient, TakoTlsClient) for simple outbound requests, enabled with client/tls features (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, FromRequestMut now sync; async versions (AsyncFromRequest*) remain available.
  • Streaming support: TakoBody::from_stream & try_from_stream for building stream-based responses (e.g., SSE or proxy).
  • Router composition: Router::merge(other) merges routers and prepends middlewares automatically.
  • New helpers: IntoMiddleware, StaticHeaders for concise responder definitions.
  • New examples: with-state, multipart, streams.

Full Changelog: tako-v.0.2.1...tako-v.0.2.2