Skip to content

Releases: hummingbird-project/hummingbird

v2.6.0

28 Dec 11:18
17d8de6
Compare
Choose a tag to compare

Minor release changes

  • Add RequestBody.consumeWithInboundCloseHandler and RequestBody.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 from Route.buildResponder and assert if it throws an error. #637
  • Rename HTTP2UpgradeChannel.Configuration to HTTP2ChannelConfiguration. #612
  • Removed default additionalChannelHandlers from HTTP1Channel. #623
  • Conform RequestBody.Source to Sendable. #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 from HTTP2UpgradeChannel. #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

20 Nov 10:55
70b0714
Compare
Choose a tag to compare

Breaking change

  • Remove mistakenly added public from NIOAsyncChannelRequestBody

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

  • Add fixes for Swift 6 with latest SwiftNIO. #605
  • Minor optiomisation by specialising RequestBody streaming for NIOAsyncChannel.Inbound. #611

v2.4.0

13 Nov 12:18
8af1c90
Compare
Choose a tag to compare

Minor release changes

  • Added HTTP1Channel.Configuration. #600
  • Added idleTimeout to HTTP1Channel.Configuration to close idle HTTP1 connections. #600
  • Added HTTP2ServerConnectionManager channel handler to manage graceful shutdown, idle, close and maxAge timeouts. Added HTTP2UpgradeChannel.Configuration to set associated values. #601
  • Conform Cookie.SameSite to Sendable. #604

v2.3.0

25 Oct 13:59
Compare
Choose a tag to compare

Minor release changes

  • Add ChildRequestContext for RequestContext that can be created from another RequestContext. #596
  • Add RouterMethods.group(_:context:) for routes that transform the RequestContext. #596
  • Add `RouteGroup(_:context:builder:) for result builder router context transforms. #596

Patch release changes

  • Remove @discardableResult from RouterMethods.group() functions. #598

Other changes

  • Added test testChunkedTransferEncoding to verify transfer-encoding header is getting set correctly. #597

v2.2.0

15 Oct 09:14
Compare
Choose a tag to compare

Minor release changes

  • Add RouterController for better composability in RouterBuilder 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

07 Oct 12:57
913e6a0
Compare
Choose a tag to compare

Minor release changes

  • Add additional init to HTTPError that takes list of headers. Also remove the assumption that HTTPError content-type is json. #561

Patch release changes

  • Remove @escaping from Application.test closure. #555
  • Environment.set will actually set the environment variable. #557
  • Remove retroactive Sendable requirement from JSONEncoder/Decoder. #559
  • Don't update expires value if persist update is called with nil expire value. #562
  • Check for HTTPResponseError instead of HTTPError in FileMiddleware. #569
  • Use ProcessInfo.processInfo.environment instead of environ. #571 from @GNMoseke

Other changes

  • Add GitHub action for verifying documentation headers. #554
  • Add Swift 6 to GitHub CI. #556

v2.0.1

15 Sep 11:41
d4f792d
Compare
Choose a tag to compare

Minor release changes

  • Require swift-metrics 2.5.0 or later

Other changes

Version 2.0.0

12 Sep 08:31
6c568da
Compare
Choose a tag to compare

🎉 🎉 🎉

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 to Service 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 the RequestContext generic parameter.
  • Moved HummingbirdCore libraries into Hummingbird package.
  • Merged HummingbirdFoundation library into Hummingbird library.
  • Renamed HummingbirdXCT to HummingbirdTesting.
  • 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

09 Sep 12:25
8927764
Compare
Choose a tag to compare
Pre-release

Breaking changes

  • Renamed RouterMethods.add(middlewareStack:) to RouterMethods.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 using URLEncodedFormDecoder. #543
  • Add support to URLEncodedFormDecoder for decoding arrays formatted with array index eg arr[0]=url&arr[1]=encoded&arr[2]=form. #542 from @supersonicbyte

v2.0.0 Release Candidate 5

27 Aug 08:58
39362b4
Compare
Choose a tag to compare
Pre-release

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