Skip to content

Releases: hummingbird-project/hummingbird

v2.0.0 Beta 5

21 May 16:37
aed1e36
Compare
Choose a tag to compare
v2.0.0 Beta 5 Pre-release
Pre-release

Breaking changes

  • Allow for LogRequestsMiddleware to filter headers logged. PR #433
  • Add services parameter to Application.init. PR #438
  • Don't add @_exported to Foundation symbols. PR #449
  • Add requirement that channel is accessible in ServerChildChannel.Value. PR #450
  • HTTPChannelBuilder renamed HTTPServerBuilder and builds Server instead of ServerChildChannel. PR #452
  • Address renamed back to BindAddress

Minor release changes

  • Make RequestBody.init(asynsSequence:) public.
  • Make LocalFileSystem.init() public. PR #451 from @alephao
  • Ensure tracing span records correct duration. PR #435
  • Add support for compiling against Musl. PR #446

Patch release changes

  • Return 404 when user attempts to load folder from FileMiddleware. PR #432
  • Include more descriptive error messages when returning errors. PR #431
  • Add content-length header if we pass in a body to the router test framework
  • Optimize TrieRouter by using array of structs. PR #443
  • Rely on NIO defaults for `maxMessagesPerRead. PR #441
  • Minor optimisations, reducing number of allocations. PR #454

v2.0.0 Beta 4

29 Apr 10:19
23bedac
Compare
Choose a tag to compare
v2.0.0 Beta 4 Pre-release
Pre-release

Minor release changes

  • Add public to RouterMethods.on(_:path:use:)

v2.0.0 Beta 3

29 Apr 09:56
e5fbcd9
Compare
Choose a tag to compare
v2.0.0 Beta 3 Pre-release
Pre-release

Breaking changes

  • Remove ClientConnection code as this has been moved to hummingbird-websocket the only place it is used.
  • Remove RouteHandler protocol as this doesn't work with dependency injection.
  • Remove Sendable conformance requirement from ResponseEncoder, RequestDecoder protocols. PR #424
  • Remove ServerChildChannel generic parameter from ApplicationProtocol. PR #426
  • Add optional port parameter to TestClientProtocol

Minor release changes

  • Fix minimum nio version to use async FileIO. PR #414 from @sidepelican
  • Update content-length header on setting Response body. PR #425
  • Add RouteCollection type for passing around groups of routes unattached to a Router. PR #421

Patch release changes

  • Remove SwiftNIO outbound HTTP header validation as HTTPTypes already does this for us. PR #417

v1.12.2

18 Apr 15:30
Compare
Choose a tag to compare

Patch release changes

  • Require hummingbird-core v1.6.1

v2.0.0 Beta 2

03 Apr 17:15
Compare
Choose a tag to compare
v2.0.0 Beta 2 Pre-release
Pre-release

Major release changes

  • Add FileProvider protocol to abstract file loading in FileMiddleware. Default to loading from the local file system, this could be used to load from S3, or using a cache. #405

Minor release changes

  • Make RequestID public #407

Patch release changes

  • Reinstate "hb_" prefix to logger metadata. #406
  • Fix crash in percentDecoding in HBParser. PR #404 from @tannerdsilva
  • Add support for running tests on macOS CI without access to the KeyChain. #409
  • Fix metrics timers to record length of request once all of the response has been written #412

v1.12.1

25 Mar 10:24
94820ea
Compare
Choose a tag to compare

Patch release changes

  • Ensure we are running on EventLoop after AsyncMiddleware. PR #351
  • Replace LegacyTracer with Tracer from swift-distributed-tracing now we aren't supporting Swift 5.6. PR #327
  • Fix crash in percentDecoding in HBParser. PR #411 from @tannerdsilva

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.