xitca-http 0.9.2

http library for xitca
Documentation
# 0.9.2
## Fix
- fix HTTP/2 RST_STREAM lifecycle

# 0.9.1
## Add
- `util::router::Router::merge` for merging two `Router`

## Change
- `util::router::Router` accept relaxed lifetime `&str` as route identifier
- `util::router::Router` would panic at rule conflict on `Router::insert` callsite

## Fix 
- fix HTTP/2 connect method handling
- fix HTTP/2 pseudo header parsing for empty trailers

# 0.9.0
## Add
- add io_uring, tls, HTTP/2 and HTTP/2 cleartext support for unix socket
- add io_uring support for unified `HttpServiceBuilder`
- add trailers support for HTTP/1.1, HTTP/2, HTTP/3
- add `http::Protocol` type to `http::RequestExt`
- add `http::RequestExt::protocol` method

## Change
- use `http-body-alt` crate for generic http body type and streaming interface

    `futures::Stream` -> `http_body_alt::Body`
    
    `Bytes` -> `http_body_alt::Frame<Bytes>`

- use `http-body-alt` crate for concrete http body type

    `Once` -> `http_body_alt::Full`

    `NoneBody` -> `http_body_alt::Empty`

    `Either` -> `http_body_alt::Either`
- `body::ResponseBody` methods rename

    `none` -> removed

    `box_stream` -> `boxed`

    `stream` -> `body`

- update `xitca-io` to `0.6.0`
- update `xitca-tls` to `0.6.0`
- use completion based API for all I/O operations

## Remove
- remove all `futures::Stream` trait interface

# 0.8.2
## Fix
- fix perf regression in io_uring dispatcher

# 0.8.1
## Change
- update `xitca-router` to `0.4.0`. Beware this is an unstable feature breaking change

# 0.8.0
## Change
- remove `date::DATE_VALUE_LENGTH` from public export
- rename `date::DateTime::DATE_VALUE_LENGTH` const to `DATE_SIZE_HINT`. It's default value is the same as removed `DATE_VALUE_LENGTH`
- update `xitca-server` to `0.6.1`
- update `xitca-tls` to `0.5.1`
- update `xitca-io` to `0.5.1`
- update `socket2` to `0.6.0`
- update `tokio` to `1.48`
- update `h3` to `0.0.8`
- update `h3-quinn` to `0.0.10`

# 0.7.0
## Change
- bump MSRV to `1.85` and Rust edition 2024
- update `xitca-service` to `0.3.0`

# 0.6.0
## Change
- bump MSRV to `1.79`
- update `h3` to `0.0.6`
- update `h3-quinn` to `0.0.7`
- update `xitca-io` to `0.4.0`
- update `xitca-router` to `0.3.0`
- update `xitca-service` to `0.2.0`
- update `xitca-tls` to `0.4.0`
- update `xitca-unsafe-collection` to `0.2.0`
- update `tokio-uring` to `0.5.0`

# 0.5.0
## Change
- update `xitca-io` to `0.3.0`
- update `xitca-tls` to `0.3.0`
- update `h3` to `0.0.5`
- update `h3-quinn` to `0.0.6`

# 0.4.1
## Fix
- fix panic when using `rustls/ring` feature together with `xitca-http/rustls`
- fix panic when using `rustls/ring` feature together with `xitca-http/rustls-uring`

## Change
- update `xitca-io` to `0.2.1`
- update `xitca-tls` to `0.2.3`

# 0.4.0
## Add
- `util::service::router::PathGen` and `util::service::router::RouteObject` for advanced routing behavior. enabling more complex routing like multiple layer of router nesting. Example:
    ```rust
    // this pattern is now valid
    Router::new()
        .insert("/api", Router::new()
            .insert("/v2", Router::new().insert("/login", fn_service(..)))
        );
    
    // this pattern is also valid
    Router::new().insert("/api/v2", Router::new().insert("/login", fn_service(..)));
    ```

## Change
- `util::service::router::RouterGen` is renamed to `RouteGen`. It's API is shrunk to generating route service only. For route path generating please reference `util::service::router::PathGen`.
- `body::Either` doesn't expose it's enum variants in public API anymore.
- relax `Stream::Item` associated type when impl on `body::BoxBody::new` and `body::ResponseBody::boxed_stream` types. Instead of requiring the stream to yield `Ok<Bytes>` it now accepts types `Ok<impl Into<Bytes>>`.
- update `xitca-io` to `0.2.0`.
- update `xitca-tls` to `0.2.0`.

# 0.3.0
## Add
- add `util::middleware::catch_unwind`. A middleware catches panic and output it as error.

## Change
- `body::ResponseBody` doesn't expose it's enum variants in public API anymore.
- `util::middleware::Logger` does not expect `tracing::Span` anymore instead it wants `tracing::Level` for defining the verbosity of span. it would make new span per request with given `Level`. `Logger` middleware requires the service type it enclosed with it's `Service::Error` type bound to `std::error::Error` trait instead of only `std::fmt::Debug`. providing a better tracing output.
- update `xitca-unsafe-collection` to `0.1.1`.

# 0.2.2
## Change
- `set-cookie` header is not folded into single line of header value anymore.

# 0.2.1
## Change
- update `h3` to `0.0.4`.
- update `h3-quinn` to `0.0.5`.

# 0.2.0
## Change
- `h1::proto::context::Context::encode_headers` does not want `Extensions` type argument anymore. It also wants `&mut HeaderMap` instead of `HeaderMap` to avoid consuming ownership of it.
- update `xitca-router` to `0.2.0`