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
MonadCatchIO
instance for theSnap
monad 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
Iteratee
bind. CPS is hard!Our code which generated “
Set-Cookie
” headers from theCookie
list stored in theResponse
object 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 socketrecv
calls.
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.