Releases: http-kit/http-kit
v2.8.0 (2024-04-30)
Dep/s: http-kit is on Clojars.
Versioning: http-kit uses Break Versioning.
This is a major feature and maintenance release. As always, please test carefully and report any unexpected problems, thank you! 🙏
Highlights include:
- Performance improvements, incl. auto JVM 21+ virtual threads when available.
- Support for the latest Ring async and WebSocket APIs.
- A comprehensive new benchmark suite for http-kit server and client.
- >15 fixes and numerous other improvements
See linked commits below for details.
A huge thanks to the 10 contributors who helped create this release!
Changes since v2.7.0
(2023-06-30)
- 6db3f0f [mod] Bump minimum Java version: 7->8
- If using AOT/uberjar, please ensure that you build with the lowest Java version that you'd like to support.
Fixes since v2.7.0
(2023-06-30)
- 2474302 [fix] [client] [#535] [#536] Fix handling of some bad ssl certificates (@jeffdik)
- b9f84d5 [fix] [client] [#523] Basic support for trailer section in chunked encoding responses
- b45725f [fix] [server] [#543] Migrate away from
SimpleDateFormat
tojava.time
, fixes native-image issue (@borkdude) - 45a4b53 [fix] [server] [#537] Respond with
Connection: Close
when appropriate - 126d5df [fix] [client] [#528] Possible fix for broken
insecure?
client option - 9be19c0 [fix] [client] [#528] Re-enable insecure SSL client tests disabled for #513
- de3596a [fix] [server] [#539] [#540] Prevent race condition in
TimerService
(@weavejester) - 99de95b [fix] [server] [#552] [#553] Bad arg order causing broken loggers config (@frwdrik)
- 2dcfa29 [fix] [server] [#546] Fix Jetty server SNI check in client tests (@weavejester)
- ed6833e [fix] [client] [#560] Attempted fix to allow SSL with IP host
- 48cb7fe [fix] [server] [#559] Add missing
Content-Type
header to last-resort error responses - bfba515 [fix] [client] Ignore nil clients, even when they're delay-wrapped
- 8738140 [fix] [server] [#551] Unintentional code duplication (@slipset)
- 491e19c [fix] [tests] Flaky timing in CI
- e2ca731 [fix] Resolve Lein composite profile warning
New since v2.7.0
(2023-06-30)
- c91a752 [new] [server] [#546] Add support for Ring WebSocket API (@weavejester)
- 6652df8 [new] [server] [#394] [#538] Add support for Ring async handler arities (@weavejester)
- 47129af [new] [server] Refactor worker threading, use virtual threads by default on JVM 21+
- e38169b [new] [client] Refactor worker threading, use virtual threads by default on JVM 21+
- 741eed8 [new] [tests] Add new benchmark suite
- 2a74dbf [new] [tests] Add first benchmark results
- af5550f [new] [client] [#554] Support non-ASCII characters on multipart filenames (@davartens)
- 41940f3 [new] [client] [server] Add public worker constructors
- f267426 [new] [client] [server]
utils/new-worker
improvements - 890de2d [new] [client] [#561] [#562] Add
:nested-param-style
option to client requests (@wevre)
Other improvements since v2.7.0
(2023-06-30)
- 5379f62 [new] [server] [#546] Also test without support for Ring WebSocket API
- 4813a17 [nop] [#530] [#531] Update dep:
http.async.client
(@NoahTheDuke) - 9877bca [nop] [client] Don't submit tasks to closed pool
- 92fc3fe [wiki] Add client page from legacy website (@harold)
- 9b131e2 [wiki] Clean-up, update client docs
- Updated dependencies
Everything since v2.8.0-RC1
(2024-02-06)
v2.8.0-RC1 (2024-02-26)
📦 Available on Clojars, this project uses Break Versioning.
This is a major feature and maintenance pre-release.
Please test carefully and report any unexpected problems, thank you! 🙏
Highlights include:
- Support for the latest Ring async and WebSocket APIs
- Performance improvements, incl. auto use of JVM 21+ virtual threads when available
- Numerous minor features, fixes, and other improvements
Please see linked commits below for details.
A huge thanks to all contributors!
Changes since v2.7.x
- 6db3f0f [mod] Bump minimum Java version: 7->8
- If using AOT/uberjar, please ensure that you build with the lowest Java version that you'd like to support.
Fixes since v2.7.x
- 2474302 [fix] [client] [#535] [#536] Fix handling of some bad ssl certificates (@jeffdik)
- b9f84d5 [fix] [client] [#523] Basic support for trailer section in chunked encoding responses
- b45725f [fix] [server] [#543] Migrate away from
SimpleDateFormat
tojava.time
, fixes native-image issue (@borkdude) - 45a4b53 [fix] [server] [#537] Respond with
Connection: Close
when appropriate - 126d5df [fix] [client] [#528] Possible fix for broken
insecure?
client option - 9be19c0 [fix] [client] [#528] Re-enable insecure SSL client tests disabled for #513
- de3596a [fix] [server] [#539] [#540] Prevent race condition in
TimerService
(@weavejester) - 99de95b [fix] [server] [#552] [#553] Bad arg order causing broken loggers config (@frwdrik)
- 2dcfa29 [fix] [server] [#546] Fix Jetty server SNI check in client tests (@weavejester)
- ed6833e [fix] [client] [#560] Attempted fix to allow SSL with IP host
- 48cb7fe [fix] [server] [#559] Add missing
Content-Type
header to last-resort error responses - bfba515 [fix] [client] Ignore nil clients, even when they're delay-wrapped
- 8738140 [fix] [server] [#551] Unintentional code duplication (@slipset)
- 491e19c [fix] [tests] Flaky timing in CI
- e2ca731 [fix] Resolve Lein composite profile warning
New since v2.7.x
- c91a752 [new] [server] [#546] Add support for Ring WebSocket API (@weavejester)
- 6652df8 [new] [server] [#394] [#538] Add support for Ring async handler arities (@weavejester)
- 47129af [new] [server] Refactor worker threading, use virtual threads by default on JVM 21+
- e38169b [new] [client] Refactor worker threading, use virtual threads by default on JVM 21+
- 741eed8 [new] [tests] Add new benchmark suite
- 2a74dbf [new] [tests] Add first benchmark results
- af5550f [new] [client] [#554] Support non-ASCII characters on multipart filenames (@davartens)
- 41940f3 [new] [client] [server] Add public worker constructors
- f267426 [new] [client] [server]
utils/new-worker
improvements
Other improvements since v2.7.x
- 5379f62 [new] [server] [#546] Also test without support for Ring WebSocket API
- 4813a17 [nop] [#530] [#531] Update dep:
http.async.client
(@NoahTheDuke) - 9877bca [nop] [client] Don't submit tasks to closed pool
- 92fc3fe [wiki] Add client page from legacy website (@harold)
- 9b131e2 [wiki] Clean-up, update client docs
- Updated dependencies
v2.8.0-beta3 (2023-10-11)
📦 Available on Clojars, this project uses Break Versioning.
Hotfix: identical to v2.8.0-beta2
but removes an unintended dependency on Cider. Thanks to @borkdude for the report!
v2.8.0-beta2 (2023-10-11)
📦 Available on Clojars, this project uses Break Versioning.
This is an early maintenance and feature pre-release.
Please test carefully and report any unexpected problems, thank you! 🙏
Fixes since v2.8.0-beta1
- de3596a [fix] [server] [#539] [#540] Prevent race condition in TimerService (@weavejester)
- 2474302 [fix] [client] [#535] [#536] Fix handling of some bad ssl certificates (@jeffdik)
- b45725f [fix] [server] [#543] Migrate away from SimpleDateFormat to java.time, fixes native-image issue (@borkdude)
- 45a4b53 [fix] [server] [#537] Respond with
Connection: Close
when appropriate
New since v2.8.0-beta1
- 741eed8 [new] [tests] Add new benchmark suite
- 2a74dbf [new] [tests] Add first benchmark results
- 6652df8 [new] [server] [#394] [#538] Add support for Ring async handler arities (@weavejester)
- 41940f3 [new] [client] [server] Add public worker constructors
- f267426 [new]
utils/new-worker
improvements
Other improvements since v2.8.0-beta1
v2.8.0-beta1 (2023-09-27)
📦 Available on Clojars, this project uses Break Versioning.
This is an early maintenance and feature pre-release.
Please test carefully and report any unexpected problems, thank you! 🙏
The main improvement in this release is to make it easier to automatically get good performance from http-kit client + server. Virtual threads are now used by default for both client and server on Java 21+, otherwise the default worker pools are now automatically sized based on available processor count.
As before, you may still want to customize your request queue and/or worker threading - but the changes here make it much easier to get started with reasonable defaults.
As always, feedback welcome! Cheers :-)
- Peter Taoussanis
Changes since v2.7.x
- 6db3f0f [mod] Bump minimum Java version: 7->8
Fixes since v2.7.x
- b9f84d5 [fix] [client] [#523] Basic support for trailer section in chunked encoding responses
- 126d5df [fix] [client] [#528] Possible fix for broken
insecure?
client option - 9be19c0 [fix] [client] [#528] Re-enable insecure SSL client tests disabled for #513
New since v2.7.x
- 47129af [new] [server] Refactor worker threading, use virtual threads by default on JVM 21+
- e38169b [new] [client] Refactor worker threading, use virtual threads by default on JVM 21+
Other improvements since v2.7.x
- 4813a17 [nop] [#530] [#531] Update dep:
http.async.client
(@NoahTheDuke)
2.7.0 (2023-06-30)
Please test carefully and report any issues!
Identical to 2.7.0-RC1
except for:
Changes since 2.6.0
⚠️
2.7.0-RC1 (2023-05-30)
Identical to 2.7.0-beta3
.
This is a major pre-release that includes many significant fixes and new features.
Please test carefully and report any issues!
A big thanks to the many contributors 🙏
Changes since 2.6.0
⚠️
- [BREAK] [#528] [Client] Support for
:insecure?
flag is currently broken - 6158351 [mod] [Client] [#501] [#502] Join multiple headers with "\n" rather than "," (@g23)
New since 2.6.0
- ed1cb8e [nop] [Docs] Introduced a new community docs wiki
- e5c8caa [new] [Client] [#393 #513] Use SNI client by default for Java >= 8
- 02a3739 [new] [Server] [Client] [#510] [#461] Support custom address & channel providers, enable Unix Domain Sockets (@kipz)
- 17eacca [new] [Client] Support dereffable
:client
vals - 7cba2db [new] [Server] [#504] Add temporary clj-kondo support for
with-channel
(@figurantpp) - eafdfcd [#224 #451] [Client] [New] Add basic multipart/mixed support (@vtrbtf)
- 4dd4ee5 [#400 #490] [Client] [New] Add
:as :raw-byte-array
coercion for babashka use case (@xfthhxk) - 13e38b8 [#485] [Client] [New] Add HTTP LIST method (@greglook)
- 727b4f1 [#484] [Server] [New] Add
:start-time
initial timestamp to requests (@niquola) - 754fe88 [#479] [Server] [New] Add
org.http-kit.memmap-file-threshold
JVM property (@ikappaki)
Fixes since 2.6.0
- 304c042 [fix] [Client] [#464] Retain dynamic client on client redirects
- 4ff7dba [fix] [Server] [#498] [#499] Don't send Content-Length header for status 1xx or 204 (@restenb)
- d6fa328 [fix] [Server] [#375] [EXPERIMENTAL] NB prevent unintentional re-use of channels (@osbert)
- 2feb510 [fix] [Client] [#446] [EXPERIMENTAL] Use host as key for keepalive conns (@luizhespanha)
- 48a4688 [fix] [Server] [#504] [#508] Add missing ^:deprecated meta for
with-channel
, et al. - 5b742ed [fix] [Client] [#503] Properly close sockets when calling stop() on client (@benbramley)
- 7632f46 [fix] [Client] [#505] Prevent duplicate headers in HeaderMap, fix broken tests (@kipz)
- 550da73 [#493 #491] [Server] [fix] Send '100 Continue' response only once (@zgtm)
Other improvements since 2.6.0
- c393759 [nop] [Tests] [#508] [#512] Move all tests from
with-channel
toas-channel
(@kipz) - e2d7103 [new] [Build] [#509] [#511] Add native-image test to CI (@borkdude)
- dff3bab [new] [Build] [#507] Add GitHub to build and run tests (@kipz)
- cf13651 [#495] [Server] [Docs] Improve error message of HTTP server loop error (@tweeks-reify)
- 88e5a04 [Housekeeping] [Server] Use const for Content-Length header
- deac8ee [Client] [Docs] Improve
client/request
docstring - 9b04909 Update some dependencies
v2.7.0-beta3 (2023-05-03)
Identical to 2.7.0-beta2
except for:
v2.7.0-beta2 (2023-04-24)
This is a major pre-release that includes many significant fixes and new features.
Please test carefully and report any issues!
A big thanks to the many contributors 🙏
Changes since 2.6.0
⚠️
- [BREAK] [#528] [Client] Support for
:insecure?
flag is currently broken - 6158351 [mod] [Client] [#501] [#502] Join multiple headers with "\n" rather than "," (@g23)
New since 2.6.0
- ed1cb8e [nop] [Docs] Introduced a new community docs wiki
- e5c8caa [new] [Client] [#393 #513] Use SNI client by default for Java >= 8
- 02a3739 [new] [Server] [Client] [#510] [#461] Support custom address & channel providers, enable Unix Domain Sockets (@kipz)
- 17eacca [new] [Client] Support dereffable
:client
vals - 7cba2db [new] [Server] [#504] Add temporary clj-kondo support for
with-channel
(@figurantpp) - eafdfcd [#224 #451] [Client] [New] Add basic multipart/mixed support (@vtrbtf)
- 4dd4ee5 [#400 #490] [Client] [New] Add
:as :raw-byte-array
coercion for babashka use case (@xfthhxk) - 13e38b8 [#485] [Client] [New] Add HTTP LIST method (@greglook)
- 727b4f1 [#484] [Server] [New] Add
:start-time
initial timestamp to requests (@niquola) - 754fe88 [#479] [Server] [New] Add
org.http-kit.memmap-file-threshold
JVM property (@ikappaki)
Fixes since 2.6.0
- 304c042 [fix] [Client] [#464] Retain dynamic client on client redirects
- 4ff7dba [fix] [Server] [#498] [#499] Don't send Content-Length header for status 1xx or 204 (@restenb)
- d6fa328 [fix] [Server] [#375] [EXPERIMENTAL] NB prevent unintentional re-use of channels (@osbert)
- 2feb510 [fix] [Client] [#446] [EXPERIMENTAL] Use host as key for keepalive conns (@luizhespanha)
- 48a4688 [fix] [Server] [#504] [#508] Add missing ^:deprecated meta for
with-channel
, et al. - 5b742ed [fix] [Client] [#503] Properly close sockets when calling stop() on client (@benbramley)
- 7632f46 [fix] [Client] [#505] Prevent duplicate headers in HeaderMap, fix broken tests (@kipz)
- 550da73 [#493 #491] [Server] [fix] Send '100 Continue' response only once (@zgtm)
Other improvements since 2.6.0
- c393759 [nop] [Tests] [#508] [#512] Move all tests from
with-channel
toas-channel
(@kipz) - e2d7103 [new] [Build] [#509] [#511] Add native-image test to CI (@borkdude)
- dff3bab [new] [Build] [#507] Add GitHub to build and run tests (@kipz)
- cf13651 [#495] [Server] [Docs] Improve error message of HTTP server loop error (@tweeks-reify)
- 88e5a04 [Housekeeping] [Server] Use const for Content-Length header
- deac8ee [Client] [Docs] Improve
client/request
docstring - 9b04909 Update some dependencies
v2.6.0 (2022-06-13)
[http-kit "2.6.0"]
Non-breaking maintenance release with some fixes and minor features
See here recommended steps when updating any Clojure/Script dependencies.
Identical to v2.6.0-RC1
.
Changes since 2.5.3
- [#476] [Server] Optimization: change buildRequestMap to create a PersistentHashMap directly (@bsless)
New since 2.5.3
- [#471 #472] [Client] Add option to not automatically add Accept-Content header (@MarcoNicolodi)
Fixes since 2.5.3
- [#469 #489] [Client] Properly unrecycle req when kept-alive conn wasn't able to be reused (@xwang1498)
- [#475 #477] [Graal] Add --initialize-at-run-time to config to stop GRAAL builds failing (@askonomm)
- [#482 #483] [Client] Fix java version parsing for JDK 17 (@pmonks)
- [#401 #481] [Client] mark Request as connected when reusing keepalive (@xwang1498)
Everything since 2.6.0-alpha1
- [#469 #489] [Fix] [Client] Properly unrecycle req when kept-alive conn wasn't able to be reused (@xwang1498)