This project uses Break Versioning.
The server can now accept a client's permessage-deflate offer and compress
WebSocket messages, with context takeover in both directions.
Opt in per server with :websocket-compression? true; it is off by default.
Related options: :websocket-max-message-size (bounds a message after
decompression, defaults to :max-ws) and :websocket-compression-threshold
(send messages below a given size uncompressed, default 0).
See WebSocket compression
for what is and isn't supported, tuning guidance, and measured trade-offs.
A channel accepts everything you send! it, and if the peer stops reading the
data queues in the server. That queue was unbounded and silent: one non-reading
client took 1364 MB of heap in 8 seconds while send! returned true on
all 20 000 calls. HTTP streaming and WebSocket share the write path, so both
were affected.
Queued bytes are now counted per connection, in O(1) — incremented by what is
enqueued, decremented by SocketChannel.write's return value, under the
synchronized (atta) that already guards toWrites. Same units and shape as
Netty's ChannelOutboundBuffer.
writable? — false once more than :queue-high-water-bytes (default
64 KB) is queued, true again only below :queue-low-water-bytes (default
32 KB). Two marks for hysteresis, as Netty's WriteBufferWaterMark.on-writable — a race-free, one-shot continuation scheduled immediately
if already writable or called once when writability is restored, so an application is
told rather than having to poll. Equivalent to Netty's
channelWritabilityChanged, Node's 'drain', Servlet 3.1's
onWritePossible.queued-bytes — the current backlog, for metrics.:max-queued-bytes — a close threshold that schedules the connection for
closing. Concurrent producers can overshoot it before the selector closes.
Off by default (see below).
send! is unchanged: false still means closed and nothing else. A write
past the mark is still accepted, exactly as Netty's write() is.
A size threshold cannot yet distinguish a stalled peer from a large response,
because HttpUtils.bodyBuffer materialises a whole body into a single
ByteBuffer — a 100 MB download to a perfectly healthy client arrives as one
100 MB enqueue. Measured: with a 64 MiB threshold that download is truncated;
with the threshold off it completes. Jetty's equivalent (maxOutgoingFrames) is
likewise unlimited by default.
Enable it where responses are small and incremental — WebSocket, SSE — and note
the threshold is per connection. A bound safe to enable by default would need to
key on stall rather than size, which is a follow-up.
Overflow logs a warning and emits the serverQueueOverflow event, once per
connection.
This is a security and maintenance pre-release with extensive protocol
hardening across the server, client, and WebSocket implementations. It's
expected to be stable, but the changes affect core networking paths: please
test carefully and report any unexpected problems, thank you! 🙏
See linked commits below for details, and big thanks to all contributors!
- Peter Taoussanis
This release rejects several malformed or ambiguous HTTP and WebSocket forms
that were previously accepted, and fixes request, response, TLS, redirect,
pooling, and resource-limit hazards.
Configured max-body-filter limits now apply to both received and
automatically decompressed response sizes. Buffered responses remain unlimited
by default; use max-body-filter or :as :stream for untrusted content.
Three uncommon behaviours intentionally change: malformed WebSocket handshakes
are rejected, the server now owns wire response framing, and unsupported
:tunnel? true proxy requests fail explicitly. Please see the BREAKING entries
for affected users and remediation.
- [mod] [server] Harden HTTP boundaries [4a37a56]
- [mod] [server] [GHSA-j9v4-rr7v-r6pw] WebSocket enforce protocol state (@hibrian827) [08950e3]
- [mod] [client] Proxy reject broken tunnels [06c821f]
- [sec] [server] [GHSA-qwg7-h8j3-975p] Preserve protocol integrity (@vartija) [eb60ccf]
- [sec] [server] [GHSA-4gx4-prhm-c233] Enforce protocol boundaries (@koyokr) [7876af2]
- [sec] [client] Preserve protocol integrity [973d386]
- [sec] [client] Preserve request integrity [f4b60dc]
- [sec] [client] Enforce message integrity [84c5035]
- [sec] [client] [GHSA-h7mc-gw66-cwmx] Enforce decoded max-body limits (@EQSTLab) [af93798]
- [sec] [client] Harden request handling [b8f2a35]
- [sec] [client] Isolate TLS policies [f922167]
- [sec] [server] WebSocket preserve close semantics [3c6f1bd]
- [sec] [server] Proxy validate numeric addresses [7046202]
- [fix] [server] Preserve response lifecycle [c4a6ff4]
- [fix] [server] [client] Protocol normalize public contracts [3283c05]
- [fix] [server] [client] Bodies reduce resource hazards [c0f95e9]
- [fix] [client] [#609] [#610]
make-client to use default SSL configurer if available (@souenzzo) [ef9172c] - [fix] [client] [#607] [#608] [#611] Enable SNI with
:insecure? true (@Ramblurr) (@souenzzo) [3ba47b8] - [prf] [client] Reuse HTTP/1.0 connections [410ec78]
- [fix] [server] Timer preserve scheduler liveness [2b122dc]
- [fix] [server] [client] Graal validate current builds [944f97e]
- [new] [client] [#591] [#593] [#602] Make RespListener immediately stream response (@GAumala) [c96eaea]
- [new] [server] [#606] [#585] Return 400 for protocol exceptions (@caioguedes) [772737f]
- [new] [server] [#613] Add
:protocol to Ring requests to match Ring spec (@souenzzo) [43f3bf1]
This is a feature and maintenance pre-release. It's expected to be stable but as always, please test carefully and report any unexpected problems, thank you! 🙏
See linked commits below for details, and big thanks to all contributors!
- Peter Taoussanis
This release includes a new :legacy-unsafe-remote-addr? option for http-kit server kindly provided by @ramblurr. The default value (true) retains the old (unsafe) behaviour for backwards compatibility, but you may want to check the relevant docs and consider a change for improved security.
- REVERTED [new] [client] [#591] [#593] Make RespListener immediately stream response (@GAumala) [fc1254c]
- [fix] [#601] Avoid int overflow in DynamicBytes (@reutsharabani) [e8ade61]
- [fix] [server] [#584] Reject invalid host header ports (@ianmuge) [de33aed]
- [fix] [server] [#578] [#579] Fix regression in #375 (@andersmurphy) [76b869f]
- [fix] [client] [#592] Fix number encoding in
MultipartEntity (@GAumala) [2baeab5] - [fix] [client] [#574] [#575] Fix possible
java.util.zip.ZipException for deflate encodings (@pieterbreed) [42ad799] - [fix] [client] [#568] [#569] Fix performance regression (@bsless) [3831982]
- [fix] [client] [#583] [#594] Don't send Content-Length: 0 if body is nil (@GAumala) [eefe7c1]
- [fix] [client] [#590] [#576] Fix warning during client tests (@kolstae) [a8a5df8]
- [new] [server] [#454] [#600] Add
:legacy-content-length? option (@Ramblurr) [e33f7c9] - [new] [server] [#226] [#599] Add
:legacy-unsafe-remote-addr? option for secure IP handling (@ramblurr) [72b4a03] - [new] [server] [#588] [#589] Add
join-server function (@hlship) [b31d588] - [new] [server] [client] [#581] [#582] [#601] Throw instead of trying to allocate impossibly large arrays (@reutsharabani) [e4937b1]
- [new] [client] [#517] [#567] Add some Java methods to better enable instrumentation (@jefimm) [082eb7f]
- [new] [client] [#366] [#596] Check for non-text doc types with "text" or "xml" in Content-Type (@TheKostins) [3629757]
- [doc] Mention
utils/new-worker util [1d173fe] - [doc] Extend production info section, link directly from README [fd6b993]
- [doc] [#570] [#572] Add updated WebSocket example to wiki (@jf) [a0d39bf]
This is a feature and maintenance pre-release. It's expected to be stable but as always, please test carefully and report any unexpected problems, thank you! 🙏
See linked commits below for details, and big thanks to all contributors!
- Peter Taoussanis
This release includes a new :legacy-unsafe-remote-addr? option for http-kit server kindly provided by @ramblurr. The default value (true) retains the old (unsafe) behaviour for backwards compatibility, but you may want to check the relevant docs and consider a change for improved security.
- [fix] [client] [#583] [#594] Don't send Content-Length: 0 if body is nil (@GAumala) [eefe7c1]
- [new] [client] [#591] [#593] Make RespListener immediately stream response (@GAumala) [cdb06f2]
- [new] [client] [#366] [#596] Check for non-text doc types with "text" or "xml" in Content-Type (@TheKostins) [3629757]
- [new] [server] [client] [#581] [#582] Throw instead of trying to allocate impossibly large arrays (@reutsharabani) [e4937b1]
- [new] [server] [#454] [#600] Add
:legacy-content-length? option (@Ramblurr) [e33f7c9] - [new] [server] [#226] [#599] Add
:legacy-unsafe-remote-addr? option for secure IP handling (@ramblurr) [72b4a03]
This is a stable hotfix release to backport 2 commits from the v2.9 dev branch:
- [new] [server] [#588] [#589] Add
join-server function (@hlship) [a251a4c] - [fix] [client] [#568] [#569] Fix performance regression (@bsless) [a879b3d]
This should be a safe update for users of v2.8.0.
This is a feature and maintenance pre-release. It's expected to be stable but as always, please test carefully and report any unexpected problems, thank you! 🙏
See linked commits below for details, and big thanks to all contributors!
- Peter Taoussanis
- [fix] [server] [#584] Reject invalid host header ports (@ianmuge) [de33aed]
- [fix] [server] [#578] [#579] Fix regression in #375 (@andersmurphy) [76b869f]
- [fix] [client] [#592] Fix number encoding in
MultipartEntity (@GAumala) [2baeab5] - [fix] [client] [#590] [#576] Fix warning during client tests (@kolstae) [a8a5df8]
- [fix] [client] [#574] [#575] Fix possible
java.util.zip.ZipException for deflate encodings (@pieterbreed) [42ad799] - [fix] [client] [#568] [#569] Fix performance regression (@bsless) [3831982]
- [new] [server] [#588] [#589] Add
join-server function (@hlship) [b31d588] - [new] [client] [#517] [#567] Add some Java methods to better enable instrumentation (@jefimm) [082eb7f]
- [doc] Mention
utils/new-worker util [1d173fe] - [doc] Extend production info section, link directly from README [fd6b993]
- [doc] [#570] [#572] Add updated WebSocket example to wiki (@jf) [a0d39bf]
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:
- 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 the 10 contributors who helped create this release!
- Peter Taoussanis
- 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.
- 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 to java.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
- 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)
- 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
- 890de2d [new] [client] [#561] [#562] Add
:nested-param-style option to client requests (@wevre)
📦 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!
- 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.
- 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 to java.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
- 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
- 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
📦 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!
📦 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! 🙏
- 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
- 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
- 7d49819 [nop] Bump Jetty dependency, fix broken tests
- 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
📦 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
- 6db3f0f [mod] Bump minimum Java version: 7->8
- 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
- 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+
- 4813a17 [nop] [#530] [#531] Update dep:
http.async.client (@NoahTheDuke)
📦 Available on Clojars
Please test carefully and report any issues!
Identical to v2.7.0-RC1 except for:
- cdfc5fb [fix] [client] [#524] Reliably close InputStream when data too large (@rublag)
- [BREAK] [#528] [Client] Support for
:insecure? flag is currently broken - 6158351 [mod] [Client] [#501] [#502] Join multiple headers with "\n" rather than "," (@g23)
📦 Available on Clojars
Identical to v2.7.0-beta3.
📦 Available on Clojars
Identical to v2.7.0-beta2 except for:
- 10501a5 [fix] [#520] Remove unintended dependency on
cider-nrepl plugin (@harold)
📦 Available on Clojars
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 🙏
- [BREAK] [#528] [Client] Support for
:insecure? flag is currently broken - 6158351 [mod] [Client] [#501] [#502] Join multiple headers with "\n" rather than "," (@g23)
- 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)
- 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)
- c393759 [nop] [Tests] [#508] [#512] Move all tests from
with-channel to as-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
[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.
- [#476] [Server] Optimization: change buildRequestMap to create a PersistentHashMap directly (@bsless)
- [#471 #472] [Client] Add option to not automatically add Accept-Content header (@MarcoNicolodi)
- [#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)
- [#469 #489] [Fix] [Client] Properly unrecycle req when kept-alive conn wasn't able to be reused (@xwang1498)
[http-kit "2.6.0-RC1"]
Non-breaking maintenance release with some fixes and minor features
See here recommended steps when updating any Clojure/Script dependencies.
- [#476] [Server] Optimization: change buildRequestMap to create a PersistentHashMap directly (@bsless)
- [#471 #472] [Client] Add option to not automatically add Accept-Content header (@MarcoNicolodi)
- [#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)
- [#469 #489] [Fix] [Client] Properly unrecycle req when kept-alive conn wasn't able to be reused (@xwang1498)
[http-kit "2.6.0-alpha1"]
Non-breaking maintenance release with some fixes and minor features
See here recommended steps when updating any Clojure/Script dependencies.
- [#476] [Server] Optimization: change buildRequestMap to create a PersistentHashMap directly (@bsless)
- [#471 #472] [Client] Add option to not automatically add Accept-Content header (@MarcoNicolodi)
- [#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)
[http-kit "2.5.3"]
Non-breaking hotfix release.
See here recommended steps when updating any Clojure/Script dependencies.
- [#462 #437] Fix project.clj compiler option to support older JVMs (e.g. Java 8)
[http-kit "2.5.2"]
Non-breaking hotfix release.
See here recommended steps when updating any Clojure/Script dependencies.
- [#457 #456] [Client] Fix race condition in clientContext initialization (@bsless)
[http-kit "2.5.1"]
Non-breaking hotfix release.
See here recommended steps when updating any Clojure/Script dependencies.
- [#455] [Client] Fix Java version parsing used to set default client
hostname-verification? option (@aiba)
[http-kit "2.5.0"]
Bumps minimum JVM version from 1.6 to 1.7. Should otherwise be non-breaking.
See here recommended steps when updating any Clojure/Script dependencies.
Identical to v2.5.0-RC1.
- BREAKING: bump minimum JVM version from 1.6 to 1.7
- [#438 #439][Server] Stop using
sun.misc.Unsafe (@kirked)
- [#434][Client] GraalVM Native Image Compatibility: move SSL initialisation to constructor (@alekcz)
- [#433 #432 #129] [Server] Configurable server header (@barkanido)
- [#441][Server] Add 1-arity
server-stop!
- [#429] Fix flaky server-status tests
- [Server][Tests] Fix lint issue with newer JDKs
See here for earlier releases.