[{"data":1,"prerenderedAt":150},["ShallowReactive",2],{"news":3,"content-query-yc1GS2oalH":40},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"hero":9,"posts":16,"_id":34,"_type":35,"_source":36,"_file":37,"_stem":38,"_extension":39},"/news","",false,"Hummingbird - News","Hummingbird 2 is a cross-platform web server framework for Swift.",{"title":10,"description":11,"headline":12},"News","Latest news and developments from Hummingbird.",{"label":13,"to":14,"icon":15},"Hummingbird 2 is out!","/news/hummingbird-2","i-heroicons-arrow-top-right-on-square-20-solid",[17,24,28],{"title":18,"description":19,"to":20,"date":21,"authors":22},"We're now on GitHub Sponsors","Hummingbird is on GitHub Sponsors. Help us to continue maintaining and improving the framework by sponsoring development.","/news/github-sponsors","6 Apr 2026",[23],"Adam",{"title":13,"description":25,"to":14,"date":26,"authors":27},"Hummingbird 2 has been released. The framework has been completely rebuilt from scratch with Swift concurrency taking a central role.","11 Sep 2024",[23],{"title":29,"description":30,"to":31,"date":32,"authors":33},"Hummingbird 2 Release Candidate","The Hummingbird 2 Release Candidate is now available, marking the final stages before the official release.","/news/hummingbird-2-release-candidate","1 July 2024",[23],"content:news.yml","yaml","content","news.yml","news","yml",{"_path":14,"_dir":38,"_draft":6,"_partial":6,"_locale":5,"title":41,"description":42,"body":43,"_type":145,"_id":146,"_source":36,"_file":147,"_stem":148,"_extension":149},"Hummingbird 2","Version 2.0 of Hummingbird - the swift server framework has been released.",{"type":44,"children":45,"toc":142},"root",[46,54,65,70,75,80,85,90,94,128],{"type":47,"tag":48,"props":49,"children":51},"element","h1",{"id":50},"hummingbird-2",[52],{"type":53,"value":41},"text",{"type":47,"tag":55,"props":56,"children":57},"p",{},[58,63],{"type":47,"tag":59,"props":60,"children":62},"img",{"alt":5,"src":61},"hummingbird2-fireworks2.jpg",[],{"type":53,"value":64},"\nWe are really pleased to announce the release of Hummingbird 2.",{"type":47,"tag":55,"props":66,"children":67},{},[68],{"type":53,"value":69},"Over the last 15 months we have rebuilt the Hummingbird server framework from scratch with Swift concurrency taking a central role. The rebuild included an extended period refining the public API to make it as clear and easy to use as possible.",{"type":47,"tag":55,"props":71,"children":72},{},[73],{"type":53,"value":74},"The time I started writing what was to become version 1 of the Hummingbird server framework is almost exactly the same time the first of the Swift evolution proposals for concurrency were published. To date there have been over 35 different proposals related to concurrency published. Having concurrency built into the language has been a major structural change for Swift.",{"type":47,"tag":55,"props":76,"children":77},{},[78],{"type":53,"value":79},"But when starting out building Hummingbird many of these were only proposals, or hadn't even been published so I wrote the framework with what was available at the time which was Swift NIO EventLoopFutures. As Swift concurrency proposals were accepted and implemented I started adding support for them in the framework. But when Hummingbird 1.0 was finally released, it was still inherently an EventLoopFuture based framework with a thin veneer of Swift concurrency layered on top of it. Because of this many features of Swift concurrency were unavailable to it eg structured concurrency, task locals, task cancellation.",{"type":47,"tag":55,"props":81,"children":82},{},[83],{"type":53,"value":84},"Hummingbird 2 is a complete rewrite of the framework built on top of structured concurrency. The code is easier to read, maintain and reason about and this transfers to the backends built with it. This is the version of Hummingbird I wanted to write initially but wasn't able to because the language features weren't ready.",{"type":47,"tag":55,"props":86,"children":87},{},[88],{"type":53,"value":89},"With the imminent release of Swift 6 this is the perfect time to try out Hummingbird.",{"type":47,"tag":91,"props":92,"children":93},"hr",{},[],{"type":47,"tag":55,"props":95,"children":96},{},[97,99,108,110,117,119,126],{"type":53,"value":98},"Hummingbird consists of a number of packages. We are not doing a full release of all of these packages at the same time. Initially only ",{"type":47,"tag":100,"props":101,"children":105},"a",{"href":102,"rel":103},"https://github.com/hummingbird-project/hummingbird",[104],"nofollow",[106],{"type":53,"value":107},"hummingbird",{"type":53,"value":109},", ",{"type":47,"tag":100,"props":111,"children":114},{"href":112,"rel":113},"https://github.com/hummingbird-project/hummingbird-websocket",[104],[115],{"type":53,"value":116},"hummingbird-websocket",{"type":53,"value":118}," and ",{"type":47,"tag":100,"props":120,"children":123},{"href":121,"rel":122},"https://github.com/swift-server/swift-openapi-hummingbird/",[104],[124],{"type":53,"value":125},"swift-openapi-hummingbird",{"type":53,"value":127}," will be available as 2.0. The rest of the packages will get a 2.0 release over the next couple of months.",{"type":47,"tag":55,"props":129,"children":130},{},[131,133,140],{"type":53,"value":132},"You can find the full release notes for Hummingbird 2 ",{"type":47,"tag":100,"props":134,"children":137},{"href":135,"rel":136},"https://github.com/hummingbird-project/hummingbird/releases/tag/2.0.0",[104],[138],{"type":53,"value":139},"here",{"type":53,"value":141},".",{"title":5,"searchDepth":143,"depth":143,"links":144},2,[],"markdown","content:news:hummingbird-2.md","news/hummingbird-2.md","news/hummingbird-2","md",1775478208861]