|  | 
|  | 1 | +## v0.11.0 (2017-06-13) | 
|  | 2 | + | 
|  | 3 | +#### Bug Fixes | 
|  | 4 | + | 
|  | 5 | +* **header:** | 
|  | 6 | +  * add length checks to `ETag` parsing ([643fac1e](https://github.com/hyperium/hyper/commit/643fac1e01102524e44ead188e865830ebdfb1f4)) | 
|  | 7 | +  * prevent 2 panics in `QualityItem` parsing ([d80aae55](https://github.com/hyperium/hyper/commit/d80aae55b1af0420bfcdecb2c8515b48e3e0e641)) | 
|  | 8 | +  * Allow IPv6 Addresses in `Host` header ([8541ac72](https://github.com/hyperium/hyper/commit/8541ac72d7ec80a36171115501e49dd47bcb1d0d)) | 
|  | 9 | +  * Remove raw part when getting mutable reference to typed header ([f38717e4](https://github.com/hyperium/hyper/commit/f38717e422a80e04ca95fcd5e5c5d54b7197bed2), closes [#821](https://github.com/hyperium/hyper/issues/821)) | 
|  | 10 | +  * only add chunked to `TransferEncoding` if not present ([1b4f8579](https://github.com/hyperium/hyper/commit/1b4f85799737a537d8ebfb6afd0423b97238ab8b)) | 
|  | 11 | +  * ignore invalid cookies ([310d98d5](https://github.com/hyperium/hyper/commit/310d98d50b929b8bde898cbb1137df95da5e0840)) | 
|  | 12 | +* **http:** | 
|  | 13 | +  * Chunked decoder reads last `\r\n` ([bffde8c8](https://github.com/hyperium/hyper/commit/bffde8c841353e05e9aea267ca94848ccdeeb394)) | 
|  | 14 | +  * make Chunked decoder resilient in an async world ([8672ec5a](https://github.com/hyperium/hyper/commit/8672ec5a366e698bd32679d64dce925b3fa11fc6)) | 
|  | 15 | +* **server:** | 
|  | 16 | +  * support HTTP/1.1 pipelining ([523b890a](https://github.com/hyperium/hyper/commit/523b890a19e9325938adf42456eea6191fcb8029)) | 
|  | 17 | + | 
|  | 18 | +#### Features | 
|  | 19 | + | 
|  | 20 | +* **body:** | 
|  | 21 | +  * implement Extend and IntoIterator for Chunk ([78512bdb](https://github.com/hyperium/hyper/commit/78512bdb184903061ea02f1101c99a097483cb69)) | 
|  | 22 | +  * add Default trait to Body ([f61708ba](https://github.com/hyperium/hyper/commit/f61708ba81fc03a4797688afd5bcec87e8f98eef)) | 
|  | 23 | +  * implement `Default` for `Body` ([6faa653f](https://github.com/hyperium/hyper/commit/6faa653f0dfaa5220e76a60fcd264511686dfd08)) | 
|  | 24 | +  * implement `Default` for `Chunk` ([f5567db4](https://github.com/hyperium/hyper/commit/f5567db4dcc04a769725d0b9ccb6a81bc3026acc)) | 
|  | 25 | +* **client:** | 
|  | 26 | +  * add `HttpConnector.enforce_http` ([1c34a05a](https://github.com/hyperium/hyper/commit/1c34a05a85078421078f2cb266dccc5dfce8a9f0)) | 
|  | 27 | +  * add an accessor for the request body ([4e26646a](https://github.com/hyperium/hyper/commit/4e26646aa7b46d5739d3978126bb70e8c47cde1d)) | 
|  | 28 | +  * Response.status() now returns a `StatusCode` by value ([d63b7de4](https://github.com/hyperium/hyper/commit/d63b7de44f813696f8ec595d2f8f901526c1720e)) | 
|  | 29 | +  * add Client::handle ([9101817b](https://github.com/hyperium/hyper/commit/9101817b0fd61d7bcccfaa8933e64d6e3787395d)) | 
|  | 30 | +  * add Request.set_proxy for HTTP proxy requests ([e8714116](https://github.com/hyperium/hyper/commit/e871411627cab5caf00d8ee65328da9ff05fc53d), closes [#1056](https://github.com/hyperium/hyper/issues/1056)) | 
|  | 31 | +  * DNS worker count is configurable ([138e1643](https://github.com/hyperium/hyper/commit/138e1643e81669cae9dbe215197abd0e07f0c1e7)) | 
|  | 32 | +  * add keep_alive_timeout to Client ([976218ba](https://github.com/hyperium/hyper/commit/976218badc4a067e45a9d15af7e4eb5f2a4adc09)) | 
|  | 33 | +* **error:** Display for Error shows better info ([49e196db](https://github.com/hyperium/hyper/commit/49e196db1c91b2fb5f7ab05d99b9c7bc997195f2), closes [#694](https://github.com/hyperium/hyper/issues/694)) | 
|  | 34 | +* **header:** | 
|  | 35 | +  * add ContentType::octet_stream() constructor ([1a353102](https://github.com/hyperium/hyper/commit/1a35310273732acbf8e8498ebb5dbad3d61386cb)) | 
|  | 36 | +  * change `Cookie` to be map-like ([dd03e723](https://github.com/hyperium/hyper/commit/dd03e7239238e6c0753cf2502a0534e2c9770d9e), closes [#1145](https://github.com/hyperium/hyper/issues/1145)) | 
|  | 37 | +  * add `Cookie::iter()` ([edc1c0dd](https://github.com/hyperium/hyper/commit/edc1c0dd01b24ee32250dff51268ad60fff9293d)) | 
|  | 38 | +  * implement fmt::Display for several headers ([e9e7381e](https://github.com/hyperium/hyper/commit/e9e7381ece21588076bb712d5c508f50cd740591)) | 
|  | 39 | +  * add `Headers::append_raw` ([b4b2fb78](https://github.com/hyperium/hyper/commit/b4b2fb782e51b2b932e52fab6add7c23a369f1fb)) | 
|  | 40 | +  * Add support for Retry-After header ([1037bc77](https://github.com/hyperium/hyper/commit/1037bc773256ca05c4311a781e96fbdcaac877fe)) | 
|  | 41 | +  * add `Encoding::Brotli` variant ([f0ab2b6a](https://github.com/hyperium/hyper/commit/f0ab2b6aedb909d37698365d1fcc34ce749304b5)) | 
|  | 42 | +  * introduce `header::Raw` (#869) ([50ccdaa7](https://github.com/hyperium/hyper/commit/50ccdaa7e7db574ec9890c220765ffd2da5e493b)) | 
|  | 43 | +  * add `TE` header struct (#1150) ([f1859dfd](https://github.com/hyperium/hyper/commit/f1859dfd7abfc124dd986edc413f754f76c76e8b), closes [#1109](https://github.com/hyperium/hyper/issues/1109)) | 
|  | 44 | +  * support Opaque origin headers (#1147) ([41485997](https://github.com/hyperium/hyper/commit/414859978b47dc8ebd0df264afc4e113b8a1909e), closes [#1065](https://github.com/hyperium/hyper/issues/1065)) | 
|  | 45 | +  * add `HeaderView.raw()` ([8143c33b](https://github.com/hyperium/hyper/commit/8143c33bad9146414f14197c39f6d5326d0f0212)) | 
|  | 46 | +  * `impl Eq for ContentType` ([bba761ac](https://github.com/hyperium/hyper/commit/bba761ac547b59c885aceea5b9e52bf52e8747b5)) | 
|  | 47 | +  * add `Link` header implementation ([592c1e21](https://github.com/hyperium/hyper/commit/592c1e21256d3ba2aeba6cdc2b62d8c1ebfa1dbf), closes [#650](https://github.com/hyperium/hyper/issues/650)) | 
|  | 48 | +  * add `star`, `json`, `text`, `image` constructors to `Accept` ([bdc19d52](https://github.com/hyperium/hyper/commit/bdc19d52bf5ec2e63b785de31bfe0ad3ba4d2550)) | 
|  | 49 | +  * Add strict-origin and strict-origin-when-cross-origin referer policy ([3593d798](https://github.com/hyperium/hyper/commit/3593d7987a92518736e130586499d97afa3e5b04)) | 
|  | 50 | +  * support multiple values for Referrer-Policy header ([7b558ae8](https://github.com/hyperium/hyper/commit/7b558ae87a826ca7383c0034d4ca95fc61aeac4c), closes [#882](https://github.com/hyperium/hyper/issues/882)) | 
|  | 51 | +  * add `Warning` header ([69894d19](https://github.com/hyperium/hyper/commit/69894d19947f01ad4ff54ce0283429758acba9ff), closes [#883](https://github.com/hyperium/hyper/issues/883)) | 
|  | 52 | +  * `Headers::remove` returns the Header ([9375addb](https://github.com/hyperium/hyper/commit/9375addba03505f2515d493364f9b1beb8b9b99a), closes [#891](https://github.com/hyperium/hyper/issues/891)) | 
|  | 53 | +  * add `ContentLocation` header ([13c5bf66](https://github.com/hyperium/hyper/commit/13c5bf66c305c08a2a1af26e48115b667d141b18), closes [#870](https://github.com/hyperium/hyper/issues/870)) | 
|  | 54 | +  * add `LastEventId` header ([e1542a60](https://github.com/hyperium/hyper/commit/e1542a609f99da770a65500333d922c58e39d179)) | 
|  | 55 | +  * add `Origin header ([01843f88](https://github.com/hyperium/hyper/commit/01843f882265a894c7051dc2ecf5cf09f2c2e8e7), closes [#651](https://github.com/hyperium/hyper/issues/651)) | 
|  | 56 | +  * Add `ReferrerPolicy` header ([3a86b3a2](https://github.com/hyperium/hyper/commit/3a86b3a2b25be1c088cf7d39bb431b2e624d4191)) | 
|  | 57 | +* **http:** | 
|  | 58 | +  * add Into<Bytes> for Chunk ([fac3d70c](https://github.com/hyperium/hyper/commit/fac3d70c0b716157ba689ae2b8a0089b6afc9bdc)) | 
|  | 59 | +  * use the bytes crate for Chunk and internally ([65b3e08f](https://github.com/hyperium/hyper/commit/65b3e08f6904634294ff2d105f2551cafe7e754d)) | 
|  | 60 | +  * allow specifying custom body streams ([1b1311a7](https://github.com/hyperium/hyper/commit/1b1311a7d36b000c9c2c509971ee759da8765711)) | 
|  | 61 | +* **lib:** | 
|  | 62 | +  * add `raw_status` feature in Cargo.toml ([acd62cda](https://github.com/hyperium/hyper/commit/acd62cda446e4c647716a2d595342360dc24a080)) | 
|  | 63 | +  * remove extern Url type usage ([4fb7e6eb](https://github.com/hyperium/hyper/commit/4fb7e6ebc6b1d429dcce4bc18139bd443fffa6ee)) | 
|  | 64 | +  * export Method::Put at top level ([5c890321](https://github.com/hyperium/hyper/commit/5c890321ee2da727a814c18d4ee2df5eddd6720e)) | 
|  | 65 | +  * redesign API to use Futures and Tokio ([2d2d5574](https://github.com/hyperium/hyper/commit/2d2d5574a698e74e5102d39b9a9ab750860d92d1)) | 
|  | 66 | +  * switch to non-blocking (asynchronous) IO ([d35992d0](https://github.com/hyperium/hyper/commit/d35992d0198d733c251e133ecc35f2bca8540d96)) | 
|  | 67 | +* **mime:** upgrade to mime v0.3 ([f273224f](https://github.com/hyperium/hyper/commit/f273224f21eedd2f466f12fe30fd24e83c35922c), closes [#738](https://github.com/hyperium/hyper/issues/738)) | 
|  | 68 | +* **server:** | 
|  | 69 | +  * make Http default its body type to hyper::Chunk ([dc97dd77](https://github.com/hyperium/hyper/commit/dc97dd77f45486d9cb9a22a1859809c5af5579e2)) | 
|  | 70 | +  * make Http compatible with TcpServer ([e04bcc12](https://github.com/hyperium/hyper/commit/e04bcc12a7e081f75482cdca1e4f4c4f597ad2ce), closes [#1036](https://github.com/hyperium/hyper/issues/1036)) | 
|  | 71 | +  * add path() and query() to Request ([8b3c1206](https://github.com/hyperium/hyper/commit/8b3c1206846cb96be780923952eafe0dde7850bf), closes [#896](https://github.com/hyperium/hyper/issues/896), [#897](https://github.com/hyperium/hyper/issues/897)) | 
|  | 72 | +* **status:** | 
|  | 73 | +  * add `StatusCode::try_from(u16)`. ([f953cafe](https://github.com/hyperium/hyper/commit/f953cafe27d1c5de0c8b859e485225cfc2c18629)) | 
|  | 74 | +  * remove deprecated `StatusClass` ([94ee6204](https://github.com/hyperium/hyper/commit/94ee6204ae32b8c431c00fdc03dc75eee573c69c)) | 
|  | 75 | +  * impl Into<u16> for StatusCode ([c42f18db](https://github.com/hyperium/hyper/commit/c42f18db05e47fc24e8a8ece76cbc782b7558e8b)) | 
|  | 76 | +* **uri:** | 
|  | 77 | +  * redesign `RequestUri` type into `Uri` ([9036443e](https://github.com/hyperium/hyper/commit/9036443e6bd61b948ebe622588d2765e22e2b179), closes [#1000](https://github.com/hyperium/hyper/issues/1000)) | 
|  | 78 | +  * add `is_absolute` method to `Uri` ([154ab29c](https://github.com/hyperium/hyper/commit/154ab29c0d2b50d7bcac0f7918abf2f7a1628112)) | 
|  | 79 | +* **version:** impl `FromStr` for `HttpVersion` ([47f3aa62](https://github.com/hyperium/hyper/commit/47f3aa6247a3211ae499b30584dca6acb43d2204)) | 
|  | 80 | + | 
|  | 81 | + | 
|  | 82 | +#### Breaking Changes | 
|  | 83 | + | 
|  | 84 | +* The `Cookie` header is no longer a wrapper over a | 
|  | 85 | +  `Vec<String>`. It must be accessed via its `get` and `set` methods. | 
|  | 86 | + | 
|  | 87 | + ([dd03e723](https://github.com/hyperium/hyper/commit/dd03e7239238e6c0753cf2502a0534e2c9770d9e)) | 
|  | 88 | +* Any use of `Quality(num)` should change to `q(num)`. | 
|  | 89 | + | 
|  | 90 | + ([a4644959](https://github.com/hyperium/hyper/commit/a4644959b0f980d94898d6c2e3cb1763aac73a5e)) | 
|  | 91 | +* `HttpDate` no longer has public fields. Convert between | 
|  | 92 | +  `HttpDate` and `SystemTime` as needed. | 
|  | 93 | + | 
|  | 94 | + ([316c6fad](https://github.com/hyperium/hyper/commit/316c6fad3026ba5ff5f6b9f31aca4d4f74b144e0)) | 
|  | 95 | +* The `link_extensions` methods of the `Link` header are | 
|  | 96 | +  removed until fixed. | 
|  | 97 | + | 
|  | 98 | + ([011f28cb](https://github.com/hyperium/hyper/commit/011f28cb18d285401bc8bea2b0f0dbdf80089d97)) | 
|  | 99 | +* The `fmt_header` method has changed to take a different | 
|  | 100 | +  formatter. In most cases, if your header also implements | 
|  | 101 | +  `fmt::Display`, you can just call `f.fmt_line(self)`. | 
|  | 102 | + | 
|  | 103 | + ([6f02d43a](https://github.com/hyperium/hyper/commit/6f02d43ae0d80971a32617e316498b81acf38ca2)) | 
|  | 104 | +* The `Encoding` enum has an additional variant, `Trailers`. | 
|  | 105 | + | 
|  | 106 | + ([f1859dfd](https://github.com/hyperium/hyper/commit/f1859dfd7abfc124dd986edc413f754f76c76e8b)) | 
|  | 107 | +* `Origin.scheme` and `Origin.host` now return `Option`s, since the `Origin` could be `null`. | 
|  | 108 | + | 
|  | 109 | + ([41485997](https://github.com/hyperium/hyper/commit/414859978b47dc8ebd0df264afc4e113b8a1909e)) | 
|  | 110 | +* If you were explicitly checking the `StatusCode`, such as | 
|  | 111 | +  with an equality comparison, you will need to use the value instead of a | 
|  | 112 | +  reference. | 
|  | 113 | + | 
|  | 114 | + ([d63b7de4](https://github.com/hyperium/hyper/commit/d63b7de44f813696f8ec595d2f8f901526c1720e)) | 
|  | 115 | +* This removes several deprecated methods for converting | 
|  | 116 | +  Headers into strings. Use more specialized methods instead. | 
|  | 117 | + | 
|  | 118 | + ([ec91bf41](https://github.com/hyperium/hyper/commit/ec91bf418b1f285bac9231d4bee0dd96742e565a)) | 
|  | 119 | +* The `Url` type is no longer used. Any instance in the | 
|  | 120 | +  `Client` API has had it replaced with `hyper::Uri`. | 
|  | 121 | + | 
|  | 122 | +  This also means `Error::Uri` has changed types to | 
|  | 123 | +  `hyper::error::UriError`. | 
|  | 124 | + | 
|  | 125 | +  The type `hyper::header::parsing::HTTP_VALUE` has been made private, | 
|  | 126 | +  as an implementation detail. The function `http_percent_encoding` | 
|  | 127 | +  should be used instead. | 
|  | 128 | + | 
|  | 129 | + ([4fb7e6eb](https://github.com/hyperium/hyper/commit/4fb7e6ebc6b1d429dcce4bc18139bd443fffa6ee)) | 
|  | 130 | +* This makes `Request.remote_addr` an | 
|  | 131 | +  `Option<SocketAddr>`, instead of `SocketAddr`. | 
|  | 132 | + | 
|  | 133 | + ([e04bcc12](https://github.com/hyperium/hyper/commit/e04bcc12a7e081f75482cdca1e4f4c4f597ad2ce)) | 
|  | 134 | +* The `Preference` header had a typo in a variant and it's string representation, | 
|  | 135 | +  change `Preference::HandlingLeniant` to `Preference::HandlingLenient`. | 
|  | 136 | + ([2fa414fb](https://github.com/hyperium/hyper/commit/2fa414fb5fe6dbc922da25cca9960652edf32591)) | 
|  | 137 | +* `Server` is no longer the primary entry point. Instead, | 
|  | 138 | +  an `Http` type is created  and then either `bind` to receive a `Server`, | 
|  | 139 | +  or it can be passed to other Tokio things. | 
|  | 140 | + ([f45e9c8e](https://github.com/hyperium/hyper/commit/f45e9c8e4fcacc2bd7fed84ef0df6d2fcf8c1134)) | 
|  | 141 | +* The name of `RequestUri` has changed to `Uri`. It is no | 
|  | 142 | +  longer an `enum`, but an opaque struct with getter methods. | 
|  | 143 | + | 
|  | 144 | + ([9036443e](https://github.com/hyperium/hyper/commit/9036443e6bd61b948ebe622588d2765e22e2b179)) | 
|  | 145 | +* This adds a new variant to the `Encoding` enum, which | 
|  | 146 | +  can break exhaustive matches. | 
|  | 147 | + | 
|  | 148 | + ([f0ab2b6a](https://github.com/hyperium/hyper/commit/f0ab2b6aedb909d37698365d1fcc34ce749304b5)) | 
|  | 149 | +* The fields of the `Host` header are no longer | 
|  | 150 | +  available. Use the getter methods instead. | 
|  | 151 | + | 
|  | 152 | + ([cd9fd522](https://github.com/hyperium/hyper/commit/cd9fd522074bfe530c30c878e49e6ac1bd881f1f)) | 
|  | 153 | +* A big sweeping set of breaking changes. | 
|  | 154 | + | 
|  | 155 | + ([2d2d5574](https://github.com/hyperium/hyper/commit/2d2d5574a698e74e5102d39b9a9ab750860d92d1)) | 
|  | 156 | +* `Headers.remove()` used to return a `bool`, | 
|  | 157 | +  it now returns `Option<H>`. To determine if a a header exists, | 
|  | 158 | +  switch to `Headers.has()`. | 
|  | 159 | + ([9375addb](https://github.com/hyperium/hyper/commit/9375addba03505f2515d493364f9b1beb8b9b99a)) | 
|  | 160 | +* `Header::parse_header` now receives `&Raw`, instead of | 
|  | 161 | +  a `&[Vec<u8>]`. `Raw` provides several methods to ease using it, but | 
|  | 162 | +  may require some changes to existing code. | 
|  | 163 | + ([50ccdaa7](https://github.com/hyperium/hyper/commit/50ccdaa7e7db574ec9890c220765ffd2da5e493b)) | 
|  | 164 | +* LanguageTag used to be at the crate root, but it is now | 
|  | 165 | +  in the `hyper::header` module. | 
|  | 166 | + | 
|  | 167 | + ([40745c56](https://github.com/hyperium/hyper/commit/40745c5671daf8ac7eb342ff0e1e7c801a7171c4)) | 
|  | 168 | +* Removes the undocumented `from_u16` function. Use | 
|  | 169 | +  `StatusCode::try_from` instead. | 
|  | 170 | + | 
|  | 171 | +  Also makes the `status` module private. All imports of | 
|  | 172 | +  `hyper::status::StatusCode` should be `hyper::StatusCode`. | 
|  | 173 | + | 
|  | 174 | + ([f953cafe](https://github.com/hyperium/hyper/commit/f953cafe27d1c5de0c8b859e485225cfc2c18629)) | 
|  | 175 | +* All usage of `status.class()` should change to | 
|  | 176 | +  equivalent `status.is_*()` methods. | 
|  | 177 | + | 
|  | 178 | + ([94ee6204](https://github.com/hyperium/hyper/commit/94ee6204ae32b8c431c00fdc03dc75eee573c69c)) | 
|  | 179 | +* Most uses of `mime` will likely break. There is no more | 
|  | 180 | +  `mime!` macro, nor a `Mime` constructor, nor `TopLevel` and `SubLevel` | 
|  | 181 | +  enums. | 
|  | 182 | + | 
|  | 183 | +  Instead, in most cases, a constant exists that can now be used. | 
|  | 184 | + | 
|  | 185 | +  For less common mime types, they can be created by parsing a string. | 
|  | 186 | + | 
|  | 187 | + ([f273224f](https://github.com/hyperium/hyper/commit/f273224f21eedd2f466f12fe30fd24e83c35922c)) | 
|  | 188 | +* To use `RawStatus`, you must enable the `raw_status` | 
|  | 189 | +  crate feature. | 
|  | 190 | + | 
|  | 191 | + ([acd62cda](https://github.com/hyperium/hyper/commit/acd62cda446e4c647716a2d595342360dc24a080)) | 
|  | 192 | +* Some headers used `UniCase`, but now use | 
|  | 193 | +  `unicase::Ascii`. Upgrade code to `Ascii::new(s)`. | 
|  | 194 | + | 
|  | 195 | + ([c81edd41](https://github.com/hyperium/hyper/commit/c81edd41d783f67eca7a50d83b40c8a7cedf333c)) | 
|  | 196 | +* This breaks a lot of the Client and Server APIs. | 
|  | 197 | +  Check the documentation for how Handlers can be used for asynchronous | 
|  | 198 | +  events. | 
|  | 199 | + | 
|  | 200 | + ([d35992d0](https://github.com/hyperium/hyper/commit/d35992d0198d733c251e133ecc35f2bca8540d96)) | 
|  | 201 | + | 
|  | 202 | + | 
| 1 | 203 | ### v0.10.9 (2017-04-19) | 
| 2 | 204 | 
 | 
| 3 | 205 | 
 | 
|  | 
0 commit comments