Skip to content

Version 2.0.0

Compare
Choose a tag to compare
@adam-fowler adam-fowler released this 12 Sep 08:31
· 52 commits to main since this release
6c568da

🎉 🎉 🎉

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.