Releases: hummingbird-project/hummingbird
Releases · hummingbird-project/hummingbird
v2.6.0
Minor release changes
- Add
RequestBody.consumeWithInboundCloseHandler
andRequestBody.consumeWithCancellationOnInboundClose
for cancelling requests with either long process times or streamed responses. #631, #634, #636 - Add computed variable
Router.routes
that list all routes added to Router. #624 - Add
Router.validate()
to check if any routes clash. Call this fromRoute.buildResponder
and assert if it throws an error. #637 - Rename
HTTP2UpgradeChannel.Configuration
toHTTP2ChannelConfiguration
. #612 - Removed default
additionalChannelHandlers
fromHTTP1Channel
. #623 - Conform
RequestBody.Source
toSendable
. #628 - Update swift-nio-http2 to v1.34.1. #635 from @bcbod2002
- Assert on creating a cookie with
sameSite
set to none and with secure set to false as this is invalid. #610
Patch release changes
- Separate
HTTP2Channel
setup fromHTTP2UpgradeChannel
. #612 - Use
NIOAsyncChannelInboundStream
in router testing framework. #633 - Follow symbolic links when reading a file's attributes in
LocalFileSystem
. #642
Other changes
- Use Apple's
swift-format
for formatting source code.
v2.5.0
Breaking change
- Remove mistakenly added
public
fromNIOAsyncChannelRequestBody
Minor release changes
- Fixed typo. Renamed
SameSite.secure
to.strict
..secure
is deprecated and points to.strict
. #609 - Add application/wasm media type. #613 from @CallumTodd7
- Throw
PersistError.invalidConversion
error when it is not possible to convert a persist stored value to the one requested. #614
Patch release changes
v2.4.0
Minor release changes
- Added
HTTP1Channel.Configuration
. #600 - Added
idleTimeout
toHTTP1Channel.Configuration
to close idle HTTP1 connections. #600 - Added
HTTP2ServerConnectionManager
channel handler to manage graceful shutdown, idle, close and maxAge timeouts. AddedHTTP2UpgradeChannel.Configuration
to set associated values. #601 - Conform
Cookie.SameSite
toSendable
. #604
v2.3.0
Minor release changes
- Add
ChildRequestContext
forRequestContext
that can be created from anotherRequestContext
. #596 - Add
RouterMethods.group(_:context:)
for routes that transform theRequestContext
. #596 - Add `RouteGroup(_:context:builder:) for result builder router context transforms. #596
Patch release changes
- Remove
@discardableResult
fromRouterMethods.group()
functions. #598
Other changes
- Added test
testChunkedTransferEncoding
to verify transfer-encoding header is getting set correctly. #597
v2.2.0
Minor release changes
- Add
RouterController
for better composability inRouterBuilder
result builder. #577 from @connor-ricks - Add optional, if/else and loop capabilities to
RouterBuilder
result builder. #584 from @connor-ricks - Add
URI.decodeQuery
. #590
Patch release changes
- Require AsyncAlgorithms v1.0.2 to fix crash issues with static SDK. #581
- Explicitly include NIOFoundationCompat dependency. #589
- Replace [email protected] changes with
swiftLanguageVersions
in Package.swift. #589 - Fix Prometheus crash where we sent different dimensions to same metric in
MetricsMiddleware
. #588
v2.1.0
Minor release changes
- Add additional
init
toHTTPError
that takes list of headers. Also remove the assumption thatHTTPError
content-type is json. #561
Patch release changes
- Remove
@escaping
fromApplication.test
closure. #555 Environment.set
will actually set the environment variable. #557- Remove retroactive
Sendable
requirement fromJSONEncoder/Decoder
. #559 - Don't update
expires
value if persist update is called withnil
expire value. #562 - Check for
HTTPResponseError
instead ofHTTPError
inFileMiddleware
. #569 - Use
ProcessInfo.processInfo.environment
instead ofenviron
. #571 from @GNMoseke
Other changes
v2.0.1
Version 2.0.0
🎉 🎉 🎉
This is a major re-write of the Hummingbird server framework using structured concurrency. Below is a list of the larger changes
- Rebuild server on top of Swift NIO communication layer (NIOAsyncChannel) between their own EventLoop based APIs and structured concurrency.
- Removed all Swift NIO
EventLoopFuture
internals. - Reimplemented TLS and HTTP2 libraries.
- Rewrote router and heavily optimised it.
- Added user-defined generic context to be passed alongside requests through router.
- Add support for streamed request payloads using AsyncSequences and streamed response payloads using a output writer.
- Added result builder middleware stack.
- Used result builder middleware stack to write a result builder based router in
HummimgbirdRouter
library. - Use new HTTP types from Apple.
- Added integration with Service Lifecycle package.
Application
conforms toService
and uses graceful shutdown handlers. - The ability to extend the
Application
type has been removed. Instead it recommended to use dependency injection. - Similarly the ability to extend
Request
has been removed. Instead you should use theRequestContext
generic parameter. - Moved HummingbirdCore libraries into Hummingbird package.
- Merged
HummingbirdFoundation
library intoHummingbird
library. - Renamed
HummingbirdXCT
toHummingbirdTesting
. HummingbirdJobs
library has been broken out into it's own package swift-jobs.- The
HB
prefix on all the symbols has been removed.
To help with moving from Hummingbird 1.0 we have written a migration guide.
v2.0.0 Release Candidate 6
Breaking changes
- Renamed
RouterMethods.add(middlewareStack:)
toRouterMethods.addMiddleware(buildMiddlewareStack:)
. #540
Minor release changes
- MetricsMiddleware reports metrics and dimensions conforming to OpenTelemetry conventions. #541
- Added new meter
http.server.active_requests
measuring how active requests are in flight at this point in time. #541 - Edited logger attributes to be a similar format to metrics. #541
Patch release changes
- Fix for crash when decoding badly formatted
ClosedRange
usingURLEncodedFormDecoder
. #543 - Add support to
URLEncodedFormDecoder
for decoding arrays formatted with array index egarr[0]=url&arr[1]=encoded&arr[2]=form
. #542 from @supersonicbyte
v2.0.0 Release Candidate 5
Breaking changes
- Make
ResponseBodyWriter
methods mutating. #529
Patch release changes
- Fix serving of multiple files on the same connection. #531
- Return empty response from
FileIO
for empty files . #532 from @andreasley