Version 2.0.0
🎉 🎉 🎉
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 toService
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 theRequestContext
generic parameter. - Moved HummingbirdCore libraries into Hummingbird package.
- Merged
HummingbirdFoundation
library intoHummingbird
library. - Renamed
HummingbirdXCT
toHummingbirdTesting
. 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.