Skip to content

Releases: hummingbird-project/hummingbird

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

v2.0.0 Release Candidate 4

23 Aug 09:49
80fd368
Compare
Choose a tag to compare
Pre-release

Breaking changes

  • Removed allocator from RequestContext. #521
  • Server uses ResponseWriter to write HTTP response. #519
  • Removed ResponseBodyWriter.withTrailingHeaders. #519
  • ResponseBodyWriter closure should call finish(_:) once it is finished. It can also supply trailingHeaders to the `finish(_:) call. #519

Minor release changes

  • Added new Configuration parameter availableConnectionDelegate to control how many connections the server accepts. #518
  • Implemented MaximumAvailableConnections conforming to AvailableConnectionsDelegate which limits the number of connections the server allows to a specific amount. #518
  • Add support for binding server to NWEndpoint. #525
  • Add map to ResponseBodyWriter to support simple transforms of response bodies #526

Patch release changes

  • Fix compile errors for Musl. #517
  • Fix errors when compiling in Swift 6 mode. #523

Other changes

  • Always use fulfillment in tests. #524

v2.0.0 Release Candidate 3

22 Jul 08:41
a1028d2
Compare
Choose a tag to compare
Pre-release

Breaking changes

  • Renamed RouterPath.appendPath to RouterPath.appendingPath as it is non-mutating. PR #511

Minor release changes

  • Add MediaType .applicationManifest. PR #507 from @alephao
  • Allow user to add Middleware stack result builder to RouterMethods. PR #512
  • Add RouterMethods.group(_:context:) to transform RequestContext into new type. PR #513
  • Add ContextTransform(to:) to transform RequestContext in RouterBuilder. PR #513, #514
  • Add urlBasePath parameter to FileMiddleware that is removed from path when loading file. PR #510

Other changes

  • Updated to using SwiftFormat 0.53.10

v2.0.0 Release Candidate 2

06 Jul 15:30
50f887f
Compare
Choose a tag to compare
Pre-release

Minor release changes

  • Make MediaTypeCategory public. PR #498 from @CallumTodd7
  • Set hb_uri metric to NotFound in MetricsMiddleware for 404 errors. PR #499 from @CallumTodd7
  • Use quiescing helper to implement graceful shutdown instead of withGracefulShutdown inside HTTP handling code. PR #453
  • Add ExpressibleByStringInterpolation conformance to RouterPath. PR #505
  • Remove headers member variable requirement from HTTPResponseError protocol. PR #506

Patch release changes

  • Add test dependency to fix linking error in unit tests. PR #504 from @JonPulfer