What's Changed
- perf(request): static init for common content-type header by @0x676e67 in #1060
- perf(error): hint compiler to inline trivial error-handling functions by @0x676e67 in #1061
- perf(response): hint compiler to inline trivial response-handling functions by @0x676e67 in #1062
- perf(http2): backport and apply hyper client's H2 configuration by @0x676e67 in #1063
- fix(rt): support fake time in legacy client and TokioTimer by @0x676e67 in #1064
- bench: add benchmarks for HTTP/1.1 and HTTP/2 by @0x676e67 in #1065
- build(deps): replace
schnellruwithlruimplementation by @0x676e67 in #1066 - docs: clarify symbol conflict with OpenSSL by @0x676e67 in #1068
- bench: Add benchmarks for full and streaming bodies by @0x676e67 in #1069
- fix(http2): prevent panic when calling to_str on non-UTF8 headers by @0x676e67 in #1070
- chore: lint core by @0x676e67 in #1071
- build(deps): bump nttld/setup-ndk from 1.5.0 to 1.6.0 by @dependabot[bot] in #1072
- perf(bench): optimize benchmark server by @0x676e67 in #1073
- fix: disable Nagle's algorithm to resolve HTTP/2 performance dip by @0x676e67 in #1074
- bench: improve benchmark test coverage by @0x676e67 in #1075
- docs(hash): simplify documentation for
HashMemocreation by @0x676e67 in #1076 - build(deps): replace
raw-cpuidwithsysinfoimplementation by @0x676e67 in #1077 - fix(bench): fix CPU sysinfo reading in benchmark by @0x676e67 in #1080
- bench: add missing
TokioTimerto http1 server builder by @0x676e67 in #1081 - feat(cookie): fill missing domain/path in
get_allfrom stored scope by @0x676e67 in #1082 - build(deps): migrate from
boring2tobtlsby @0x676e67 in #1083 - build(deps): replace
ahashwithfoldhashinlrucache by @0x676e67 in #1084 - perf(http1): eliminate
ParserConfigclones on the HTTP/1.1 request hot path by @0x676e67 in #1088 - build(deps): bump btls from 0.5.3 to 0.5.4 by @0x676e67 in #1090
- perf(buf): make
BufList::remainingO(1) by caching length by @0x676e67 in #1091 - feat(multipart): add Form::set_boundary for custom boundaries by @sqdshguy in #1094
- perf(multipart): Improve memory layout of
multipart::Formby @0x676e67 in #1095 - refactor(conn): modular connector component by @0x676e67 in #1100
- feat(tls): allow pluggable TLS session cache by @0x676e67 in #1101
- fix(tcp): restore the missing TCP nodelay setting by @0x676e67 in #1102
- refactor(pool): redesign emulation and pool ID strategy by @0x676e67 in #1103
- refactor(tls): expose certificate compression APIs by @0x676e67 in #1085
- refactor(tls): decouple TLS backend logic into sub-modules by @0x676e67 in #1105
- feat(cookie): RFC 9113 compliant cookie handling by @0x676e67 in #1106
- chore(tcp): prune redundant local address handling by @0x676e67 in #1107
- chore(conn): optimize
ConnectionIdcloning by @0x676e67 in #1108 - revert(http2): remove unstable APIs by @0x676e67 in #1109
- revert(response): replace
chunkusage withBodyExt::frameby @0x676e67 in #1111 - fix(http1): allow keep-alive for chunked requests with trailers by @0x676e67 in #1112
- feat(response): allow forbidding connection recycling via
Response::forbid_recycleby @0x676e67 in #1110 - build(deps): update
tokio-tungsteniteto version 0.29.0 by @0x676e67 in #1113 - feat(ws): expose underlying stream via
WebSocket::into_innerby @0x676e67 in #1114 - feat(multipart): use
WebKitstyle boundary generation by default by @0x676e67 in #1118 - feat(request): introduce
Groupfor explicit request differentiation by @0x676e67 in #1117 - fix(http2): cancel pipe_task and send RST_STREAM on response future drop by @0x676e67 in #1116
- feat(request): expose
Extensionsfor tower middleware compatibility by @0x676e67 in #1119 - revert(ws): "feat(request): introduce
Groupfor explicit request differentiation" by @0x676e67 in #1120 - build(deps): update
http2dependency version to 0.5.15 by @0x676e67 in #1122 - perf(ws): rewrite
sec-websocket-protocolhandling by @0x676e67 in #1121 - chore(http2): fmt code by @0x676e67 in #1124
- build(deps): remove implicit feature by @0x676e67 in #1123
- style(lib): format exported http1 and http2 modules by @0x676e67 in #1129
- fix(tcp): ensure socket bind options is not accidentally cleared by @0x676e67 in #1131
- chore(tcp): fmt code by @0x676e67 in #1133
- build(deps): update
http2dependency version to 0.5.16 by @0x676e67 in #1134 - build(deps): optional
parking_lotsupport by @0x676e67 in #1126 - style(sync): fmt export by @0x676e67 in #1136
- style(core): fmt import by @0x676e67 in #1138
- refactor(ws): replace
force_http2withversionfor HTTP version selection by @0x676e67 in #1139 - perf(http1/io): leverage
tokio_util::ioto reduce vectorized write overhead by @0x676e67 in #1141 - build(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #1140
- perf(tunnel): standardize zero-copy parsing by @0x676e67 in #1142
- test(cookie): add subdomain cookie scoping tests for
Jarby @0x676e67 in #1143 - perf(http1/encode): Add
inlineannotations to Encoder methods by @0x676e67 in #1144 - build(deps): update
lrudependency version to 0.17.0 by @0x676e67 in #1145 - build(deps): replace
serde_html_formwithserde_urlencodedby @0x676e67 in #1146 - build(style): fix clippy warnings for Rust 1.95.0 by @0x676e67 in #1147
- refactor(tls): expose certificate compression APIs by @0x676e67 in #1151
- build(deps): reduce dependency on
futures-channelby @0x676e67 in #1127 - build(deps): update hickory-resolver requirement from 0.25 to 0.26 by @0x676e67 in #1149
- build(deps): update http dependency version to 1.4.0 by @0x676e67 in #1152
- refactor(tcp): reduce dependency on
futures-utilby @0x676e67 in #1154 - fix(http2): reading trailers shouldn't propagate NO_ERROR from early response by @0x676e67 in #1156
- fix(http1): send error when dispatcher is dropped mid-body by @0x676e67 in #1155
- fix(http1): fix rare missed write wakeup on connections by @0x676e67 in #1153
- fix(http1): fix possibly short reads when decoding a large body by @0x676e67 in #1157
- build(deps): update
lrudependency version to 0.18.0 by @0x676e67 in #1158 - refactor(timer): add reset to Sleep trait, remove unsafe downcasting by @0x676e67 in #1159
- chore(core): migrate core module to
wreq-protoby @0x676e67 in #1160 - build(deps): update
wreq-protodependency version to 0.2.1 by @0x676e67 in #1163 - style: fmt code by @0x676e67 in #1164
- chore(conn): split client conn responsibilities across modules by @0x676e67 in #1165
- chore(keylog): separate TLS keylog responsibilities by @0x676e67 in #1166
- chore(header): rename
OrigHeaderNametoHeaderCaseNameby @0x676e67 in #1174 - chore(trust): improve unreachable branch in certificate loading by @0x676e67 in #1173
- perf(conn): remove duplicate ALPN negotiation configuration by @0x676e67 in #1176
- feat(rt): Add compio as optional runtime by @Xerxes-2 in #1175
- docs: fix docs build warnings by @0x676e67 in #1181
- perf(group): use
GroupIdto shrink owned identifier storage by @0x676e67 in #1184 - fix(response): preserve URL info when decoding
bytes/jsonerrors by @0x676e67 in #1189 - fix(layer): fix missing body timeout layer when custom layer by @0x676e67 in #1186
- fix(decoder): disable default compression from
tower-httpif not enabled in wreq by @0x676e67 in #1194 - chore: release v6.0.0-rc.29 by @0x676e67 in #1188
New Contributors
Full Changelog: v6.0.0-rc.28...v6.0.0-rc.29