Skip to content

Releases: hummingbird-project/hummingbird

v2.0.0 Beta 1

14 Mar 10:11
dd36634
Compare
Choose a tag to compare
v2.0.0 Beta 1 Pre-release
Pre-release

This is the first beta release of Hummingbird v2. Below is a list of the changes since the last alpha

Major release changes

  • The "HB" prefix on symbols has been removed. To help transition from previous symbols with the "HB" prefix we have added deprecated typealiases for the old symbols. eg typealias HBRequest = Request. These will be removed in the final release.
  • At the same time we have renamed
    • HBMiddlewareProtocol to RouterMiddleware.
    • HBChildChannel to ServerChildChannel
    • HBResponder to HTTPResponder
    • HBURL to URI
    • Client to ClientConnection
  • HummingbirdXCT test framework has been renamed to HummingbirdTesting with symbol changes
    • HBXCTClientProtocol to TestClientProtocol
    • HBXCTClientProtocol.XCTExecute() to HBXCTClientProtocol.execute()
  • HummingbirdJobs has been reworked to allow for easier referencing of services from inside job execution code. Check https://hummingbird-project.github.io/hummingbird-docs/2.0/documentation/hummingbirdjobs for details.
  • GracefulShutdownWaiter has been removed. Use try await gracefulShutdown() from ServiceLifecycle instead.
  • HBParser scope is now package

Other changes

  • 2.0 code has now been merged into main branch.

v2.0.0 Alpha 3

20 Feb 10:19
8cb3e42
Compare
Choose a tag to compare
v2.0.0 Alpha 3 Pre-release
Pre-release

Breaking changes

  • Removed HBRequestContext.init(allocator:logger:) as a protocol requirement, removed default implementation of HBRequestContext.init(channel:logger:) requirement.
  • JobQueue protocol has associated type JobID for identifying a job.
  • Removed GracefulShutdownWaiter. Instead use try await gracefulShutdown() which is already provided by ServiceLifecycle.

Minor release changes

  • Added HBParameter.get/require function for types that conform to RawRepresentable.
  • Added HBRouterOptions. Options include
    • caseInsensitive: Route path matching is case insensitive
    • autoGenerateHeadEndpoints: Automatically generate HEAD endpoints for all GET endpoints.
  • Add primary associated type for HBRouterMethods. Thanks to @sidepelican

Patch release changes

  • Fixed HTTP2 channel cleanup
  • Replaced atomic in HTTPChannelHandler.handleHTTP with value wrapped in NIOLockedValueBox
  • Tag retroactive protocol conformances.

v2.0.0 Alpha 2

05 Feb 19:42
5c1f2ea
Compare
Choose a tag to compare
v2.0.0 Alpha 2 Pre-release
Pre-release

Breaking changes

  • HBRequestBody has been converted from an enum to a struct.
  • HBBindAddress renamed to HBAddress and has been converted from an enum to a struct.
  • HBHTTPChannelBuilder.http2 renamed to HBHTTPChannelBuilder.http2Upgrade.
  • HBServerConfiguration is no longer passed to HBChildChannel.setup.
  • Removed HBRouterMethodOptions as they are no longer needed.
  • Removed loggerWithRequestId global function.
  • Removed HBApplicationConfiguration.noHTTPServer as we don't use it.
  • HBServer.makeServer is no longer public.
  • .env file loading is now async.

Minor release changes

  • Added HBRequestBody.makeStream to construct a new back pressured stream of buffers for a request body.
  • Added generalized client type to setup client connection without defining the protocol being used (being used by WebSocket client).
  • HBApplicationConfiguration members are all var instead of let.

Patch release changes

  • Fix issue with HBApplication.runBeforeServerStart and testing using .router framework.
  • Set StrictConcurrency=complete and fixed related warnings

Other changes

  • Updated README for v2.

Full Changelog: 2.0.0-alpha.1...2.0.0-alpha.2

v2.0.0 Alpha 1

22 Jan 14:45
Compare
Choose a tag to compare
v2.0.0 Alpha 1 Pre-release
Pre-release

This is the first alpha release of Hummingbird v2. Below is a list of the major changes

  • Complete rewrite of internals to be Swift structured concurrency based instead of NIO EventLoop
  • All EventLoopFuture based APIs have been removed
  • Integration with v2 of Swift Service Lifecycle.
  • Removed ability to extend HBApplication and HBRequest. These are replaced with direct dependency injection and a generic request context which is passed along with the request in route handlers and middleware.
  • In addition to the trie based router we have a new result builder based router.
  • Uses new HTTPTypes from Apple.
  • HummingbirdCore module is now in the same repository as Hummingbird
  • Merged HummingbirdFoundation into Hummingbird
  • Rewrite of Jobs system to use structured concurrency.

API Documentation can be found here and more details about differences between Hummingbird v1 and v2 can be found in the migration guide

Alongside the Hummingbird v2 alpha release, there will be alpha releases of HummingbirdAuth, HummingbirdRedis and HummingbirdFluent. WebSocket and Compression are not ready for release yet and will come later.

v.1.12.0

02 Jan 07:52
02ab651
Compare
Choose a tag to compare

Minor release changes

  • Add RequestID to generate unique ids for each request. The request id is no longer just an incrementing counter. It now includes an extra random element to identify the hummingbird process generating the request. It is also output as hex instead of decimal. PR #326

Other changes

  • Removed unused documentation. Documentation is generated from https://github.com/hummingbird-project/hummingbird-docs.
  • Documentation link now includes hummingbird version, in preparation for future major releases.
  • Set documentation visibility to internal for @_exported symbols from other libraries.

v1.11.0

22 Dec 11:33
1d4a48c
Compare
Choose a tag to compare

Minor release changes

  • Make HBMethods.constructResponder public. PR #316

Other changes

  • Update CONTRIBUTORS.md
  • Fix small code mistake in Encoding and Decoding.md. PR #304 from @sidepelican

1.10.1

03 Dec 10:12
14b5a51
Compare
Choose a tag to compare

Patch release changes

v1.10.0

29 Nov 17:41
49b1ad7
Compare
Choose a tag to compare

Minor release changes

  • Change scope of HBXCTResponse.init and HBXCTError to public

v1.9.1

16 Nov 12:18
a0a17ae
Compare
Choose a tag to compare

Patch release changes

  • Remove global ISO8601DateFormatter used in URLEncodedForm encoder/decoder as it is not thread safe on Linux.

v1.9.0

06 Oct 13:25
3c7f440
Compare
Choose a tag to compare

Minor release changes

  • Minimum supported version of Swift is 5.7. PR #242
  • Add own version of EventLoopGroupProvider which only includes shared or singleton. Deprecate HBApplication.init that uses swift-nio version. PR #241
  • Added HBApplication.run which calls both start and wait PR #243
  • Added HBApplication.asyncWait and HBApplication.asyncRun that can be called from an asynchronous context. PR #243

Patch release changes