The Snap team is proud to announce the release of Snap 0.4.1, containing bugfixes and efficiency improvements. Here are the changes since 0.4.0:
Bugfixes
The
MonadCatchIOinstance for theSnapmonad was broken (this was bug #48 on the issue tracker), causing exceptions to leak outside of catch blocks. This is now fixed. Thanks to Bryan O’Sullivan for reporting this.Fixed several space leaks in file upload support, one of which was fixed by a new release of enumerator. Thanks to John Millikin for fixing the space leak in
Iterateebind. CPS is hard!Our code which generated “
Set-Cookie” headers from theCookielist stored in theResponseobject had the unfortunate side-effect of blowing away any “Set-Cookie” headers users put into the response by hand.
Efficiency improvements
At the suggestion of Jasper Van der Jeugt, changed the string match algorithm in our file upload code from Knuth-Morris-Pratt to Boyer-Moore-Horspool. File uploads now use much less CPU time, thanks Jasper!
In
snap-server, eliminated an unnecessary copy in our socketrecvcalls.
Upcoming talk
Gregory Collins will be speaking at QCon London on Friday, March 11 about “High-performance web applications in Haskell”. The talk is not specifically about the Snap Framework — although Snap will be discussed — but instead will be about why Haskell is a great fit for high-performance web applications, with a nod to projects like Happstack, Warp, and Yesod.