[Haskell-cafe] ANN: Happstack 0.4.1
jeremy at n-heptane.com
Sat Dec 19 19:17:59 EST 2009
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).
* an HTTP server
* a rich DSL for deconstructing HTTP Requests and generating
* 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.
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:
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
For a complete list of changes see:
* 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
* 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 .
* 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
* 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)
* 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
* 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).
David Himmelstrup / Lemmih
Matthew Elder / mae
Pasqualino 'Titto' Assini
Nils / McManiaC
Creighton Hogg / wchogg
Jochem Berndsen / koeien
And everyone who filed bug reports, tested RC1 and RC2, and anyone
else I missed.
More information about the Haskell-Cafe