[Haskell-cafe] ANN: Happstack 0.4.1

Happstack 0.4.1 STABLE is now available. We recommend that all users of Happstack update to 0.4.1 immediately. Migration from Happstack 0.3 should be trivial. There was one race condition in happstack-state which could cause a state event to fail under heavy congestion. Happstack is the Haskell Application Server Stack. It is a scalable framework for developing web applications. It is similar in purpose to Django, RoR, Turbogears, Grails, Seaside, etc. Using less buzzwords, it is a collection of libraries which can be used to develop a self-contained server application which does not require SQL or Apache (though it can integrate with both). It includes: * an HTTP server * a rich DSL for deconstructing HTTP Requests and generating Responses * HTML/XML/etc templating via HStringTemplate, HSP, or Text.XHtml * a persistent data store based on user defined Haskell data types with ACID properties and state migration * and more!! Happstack's modular nature means it is easy to integrate unrelated 3rd party modules such as Pandoc, or to add support for an alternative templating system. Additionally, it does not exclude you from using SQL, or supporting other protocols besides HTTP. HOMEPAGE: http://www.happstack.com/ SUPPORTED PLATFORMS: Happstack supports GHC 6.8, 6.10, and 6.12, under GNU/Linux, FreeBSD, OS X, and Windows. GHC 6.12 currently requires a minor patch to HJScript. Details here: http://groups.google.com/group/haskell-server-pages/browse_thread/thread/56f388fdbaec1420 INSTALL: 1. ensure that ~/.cabal/bin is in your $PATH 2. cabal update 3. cabal install happstack * see SUPPORTED PLATFORMS for information about GHC 6.12 NOTABLE CHANGES: For a complete list of changes see: http://www.patch-tag.com/r/mae/happstack/snapshots/all/history Removed: * happstack-contrib has been completely removed. If you were using something in it, please complain on the mailing list. * removed Happstack.Server.S3 -- newer, better maintained S3 libraries are on hackage now * removed unsupported spread-based multimaster support fileServe: * now with sendfile() support! On supported platforms sendfile allows files to be served from the disk to the network in a zero-copy fashion. This means faster transfers, less memory and CPU usage, and no file handle leaks. (hopefully). sendfile uses native sendfile() support on Linux, Windows, OS X, and FreeBSD. Other platforms will use a sendfile emulation mode. We recommend that you use sendFile instead of sendFileStrict or sendFileLazy, unless you have specific needs and know some reason why you must use sendFileStrict or sendFileLazy. * FileServe internals majorly refactored. FileServe now provides a modular way of building your own fileServe-like functions. Also includes functions for serving a single file instead of the contents of a directory. * added more complete list of mime-types * automatically redirect from foo to foo/ if foo is a directory * filter . and .. from request path, but allow filenames and directories which start with . happstack-server: * ServerMonad instance for ErrorT * Added ServerMonad, FilterMonad, and WebMonad for XMLGenT * Added secure flag to cookies. Defaults to False. * fix supportsIPv6 to work with newer versions of network library * simpleHTTPWithSocket + bindPort for H.S.SimpleHTTP (you can use this to start the server as root, bind to the socket, and then drop privileges.) * Fixed Accept-Encoding parser to accepts encodings with a - in them. Added additional tests to acceptEncodingParserTest * fix so basicAuth sets correct response code and headers. * SimpleHTTP: added trailingSlash. Guard which checks that Request URI ends with a / * decode body of PUT requests not just POST * added ifModifiedSince guard * added host and withHost guards to SimpleHTTP (similar to dir and path, but for the requested hostname) other: * happstack-state: Correct an embarrassing race condition bug. * happstack-data: Exported getSafeGet and getSafePut * happstack: add state transition code to guestbook (add email to form, handler, and state), and tar of example _local state before transition experimental: * happstack-state: now has experimental replication support using Amazon Web Services. This support is disabled by default. This feature is highly experimental, may not work, and may even be completely removed in future versions (though, hopefully not). THANKS: Alex Jacobson David Himmelstrup / Lemmih Matthew Elder / mae Antoine Latter Erik Hesselink Pasqualino 'Titto' Assini Nils / McManiaC Thomas Hartman Creighton Hogg / wchogg John MacFarlane Jochem Berndsen / koeien MightByte And everyone who filed bug reports, tested RC1 and RC2, and anyone else I missed.