Skip to content

Releases: hummingbird-project/hummingbird

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

v2.0.0 Release Candidate 1

01 Jul 08:18
0e6de71
Compare
Choose a tag to compare
Pre-release

Breaking changes

  • HummingbirdJobs has been moved into its own repository https://github.com/hummingbird-project/swift-jobs.
  • Add FileIdentifier associated type to FileProvider. PR #487
  • Use RouterPath instead of String in Router endpoint functions. PR #491
  • Environment.shared has been removed.
  • DateCache is no longer a public symbol
  • MediaType.Category has been converted from an enum to a struct
  • Add options field to RouterBuilder and add caseInsensitive option. PR #483
  • Deprecated symbols prefixed with HB have now been tagged unavailable. PR #486
  • MiddlewareGroup.add returns self to allow for builder pattern. PR #496 from @runhum

Patch release changes

  • Router bug fixes. PR #479
  • Fixed issue where tracing middleware span names weren't set with the RouterBuilder. PR #480
  • FileMiddleware reports the resolved endpoint as "FileMiddleware", to avoid fragmentation of metrics and tracing data. PR #482
  • Remove unnecessary @availables where they are testing against older versions of swift that we don't support. PR #490
  • Use TaskLocal instead of ServiceContext to store state while running the RouterBuilder result builder. PR #488
  • Fix HTTPError serialisation and move error conversion to Response inside the Router. PR #484

Other changes

  • Fix Swift 6 concurrency errors in HTTP2 and TransportServices tests. PR #481

v2.0.0 Beta 8

18 Jun 07:33
Compare
Choose a tag to compare
v2.0.0 Beta 8 Pre-release
Pre-release
  • Include Collections in dependencies of HummingbirdCore

v2.0.0 Beta 7

17 Jun 09:48
1d10ee0
Compare
Choose a tag to compare
v2.0.0 Beta 7 Pre-release
Pre-release

Breaking changes

  • Rename Request.collateBody to Request.collectBody. PR #468
  • Replace RequestContext initialization parameters with an assoicatedtype Source and collapse RequestContext and BaseRequestContext into one protocol. PR #469, #474
  • Add add(middleware:) as a requirement to RouterMethods and conform Router

Minor release changes

  • Make chunkLength a configurable option in HBFileIO.read functions. PR #471
  • Make HTTPUserEventHandler final

Patch release changes

  • Don't apply middleware to earlier routes in RouteCollection. PR #466
  • Fix Swift.6 error in Promise used in tests

Miscellaneous

  • Added CODEOWNERS file