The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
## Patch release changes
- Require hummingbird-core v1.6.1
v2.0.0 Beta 2
2 weeks ago
## 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
## 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
5 weeks ago
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
8 weeks ago
## 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
10 weeks ago
## 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**: https://github.com/hummingbird-project/hummingbird/compare/2.0.0-alpha.1...2.0.0-alpha.2
v2.0.0 Alpha 1
12 weeks ago
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](https://github.com/swift-server/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](https://hummingbird-project.github.io/hummingbird-docs/2.0/documentation/hummingbirdrouter).
- Uses new [HTTPTypes](https://github.com/apple/swift-http-types) from Apple.
- HummingbirdCore module is now in the same repository as Hummingbird
- Merged HummingbirdFoundation into Hummingbird
- Rewrite of [Jobs](https://hummingbird-project.github.io/hummingbird-docs/2.0/documentation/hummingbirdjobs) system to use structured concurrency.
API Documentation can be found [here](https://hummingbird-project.github.io/hummingbird-docs/2.0/documentation/hummingbird) and more details about differences between Hummingbird v1 and v2 can be found in the [migration guide](https://hummingbird-project.github.io/hummingbird-docs/2.0/documentation/hummingbird/migratingtov2)
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.
## 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.
### 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
## Patch release changes
- Return correct content-type for `index.html` file. PR #299 from @sidepelican