[Haskell-cafe] ANN: Happstack 0.4.1

Jeremy Shaw 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).

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.



More information about the Haskell-Cafe mailing list