[Haskell-cafe] Haskell Web Framework Happstack 6 Released

2011-02-17 Thread Jeremy Shaw

Hello,

I am pleased to announce the release of Happstack 6. We fully  
recommend that all Happstack users migrate to the new release.


Happstack is a high-performance Haskell web framework. It has high- 
level functionality for routing requests, extracting parameters,  
manipulating responses, serving static file contents, compression  
responses, and more. It includes an integrated HTTP server and a  
native RAM-cloud database system known as MACID. This allows you to  
deploy your web application with out having to configure apache, php,  
mysql, memcached, etc!


Install instructions can be found here:

http://happstack.com/download

If you are porting existing applications you should check out the  
Happstack 6 migration guide:


http://code.google.com/p/happstack/wiki/Happstack6Migration

Porting should be pretty straight-forward. Despite the massive  
reorganization, the exports from Happstack.Server are largely the same.


What's Exciting!


The focus of this release has been happstack-server. The primary goal
was to make happstack-server much easier to learn and to use.

This includes:

 1. improving the overall organization of the library
 2. greatly improving the documentation
 3. making it easier to install
 4. ensuring that the server provides fast, reliable performance
 5. making it easier for new (and old) developers to understand and  
get started


If you have looked at Happstack before and found it too difficult to  
understand, I highly recommend you take another look. The new  
organization and documentation make it far easier to understand.


More Logical Organiation


In prior versions, the Happstack.Server.SimpleHTTP module contained  
just about everything, with little organization, and no real  
differentiation between the external API and the library internals. In  
Happstack 6, SimpleHTTP has been refactored into numerous, smaller  
modules. The internals have been moved into  
Happstack.Server.Internal.* so that they are not leaking into the  
external API. This should make it much easier to find what you are  
looking for, and prevent you from accidently running across internal  
things like the WebT monad, which you do not really need to know  
anything about.


Better Documentation


The API documentation for happstack-server is also much better. All  
external API functions should now have good haddock documentation with  
many inline examples.


However, learning a new library by studying the API documentation can  
still be pretty frustrating. So we also have the brand new Happstack  
Crash Course. http://happstack.com/docs/crashcourse/index.html.


The Happstack Crash Course covers a vast majority of the happstack- 
server API. It covers the API in a logical manner and includes many  
downloadable, runnable examples. It is intended to be read start to  
finish, and to also be usable as a reference guide for specific How  
do I do XXX questions.


Additionally, the guestbook example has been updated to a cleaner,  
more modern style of Happstack coding. It also has more comments/ 
haddock documentation.


Better API
--

During the process of documenting Happstack, many small improvements  
where made to the API. Once you try to document something stupid you  
realize how stupid it is and decided it would be good to fix it first ;)


For example, the Cookie API now makes it more obvious how to create  
session cookies vs persistent cookies. And makes it obvious how to  
expire a cookie.


The functions for looking up values in the query string and require  
body no longer require the use of the RqData monad. You can use the  
look* functions directly in the ServerPart monad.


If you do choose to use RqData, it now has an Applicative instance  
which can accummulate and report lookup errors. (http://happstack.blogspot.com/2010/10/is-rqdata-monad-still-needed.html 
) There are a bunch of other improvements to request data handling  
documented here, http://happstack.com/docs/crashcourse/RqData.html.


Easier Install
--

In order to make Happstack easier to install we have removed as many  
dependencies as possible. happstack-data no longer depends on  
happstack-util, which makes it easier to install happstack-data or  
happstack-state with out the rest of the framework. HSP and  
HStringTemplate support has been moved into *optional* happstack-hsp  
and happstack-hstringtemplate packages.


New Features


Happstack also has a number of new features including:

 - support for Heist templates(http://happstack.com/docs/crashcourse/Templates.html#helloheist 
)

 - support for Hamlet templates
 - improved environment for extracting query string and form values (http://happstack.blogspot.com/2010/10/is-rqdata-monad-still-needed.html 
)
 - support for recompilation and reloading of templates in a running  
server 

Re: [Haskell-cafe] Haskell Web Framework Happstack 6 Released

2011-02-17 Thread Thomas Hartman
I don't know who said it first, but I'm repeating it.

2011 is going to be the tipping point year for haskell web frameworks.

Thanks Jeremy!

2011/2/17 Jeremy Shaw jer...@n-heptane.com:
 Hello,

 I am pleased to announce the release of Happstack 6. We fully recommend that
 all Happstack users migrate to the new release.

 Happstack is a high-performance Haskell web framework. It has high-level
 functionality for routing requests, extracting parameters, manipulating
 responses, serving static file contents, compression responses, and more. It
 includes an integrated HTTP server and a native RAM-cloud database system
 known as MACID. This allows you to deploy your web application with out
 having to configure apache, php, mysql, memcached, etc!

 Install instructions can be found here:

 http://happstack.com/download

 If you are porting existing applications you should check out the Happstack
 6 migration guide:

 http://code.google.com/p/happstack/wiki/Happstack6Migration

 Porting should be pretty straight-forward. Despite the massive
 reorganization, the exports from Happstack.Server are largely the same.

 What's Exciting!
 

 The focus of this release has been happstack-server. The primary goal
 was to make happstack-server much easier to learn and to use.

 This includes:

  1. improving the overall organization of the library
  2. greatly improving the documentation
  3. making it easier to install
  4. ensuring that the server provides fast, reliable performance
  5. making it easier for new (and old) developers to understand and get
 started

 If you have looked at Happstack before and found it too difficult to
 understand, I highly recommend you take another look. The new organization
 and documentation make it far easier to understand.

 More Logical Organiation
 

 In prior versions, the Happstack.Server.SimpleHTTP module contained just
 about everything, with little organization, and no real differentiation
 between the external API and the library internals. In Happstack 6,
 SimpleHTTP has been refactored into numerous, smaller modules. The internals
 have been moved into Happstack.Server.Internal.* so that they are not
 leaking into the external API. This should make it much easier to find what
 you are looking for, and prevent you from accidently running across internal
 things like the WebT monad, which you do not really need to know anything
 about.

 Better Documentation
 

 The API documentation for happstack-server is also much better. All external
 API functions should now have good haddock documentation with many inline
 examples.

 However, learning a new library by studying the API documentation can still
 be pretty frustrating. So we also have the brand new Happstack Crash Course.
 http://happstack.com/docs/crashcourse/index.html.

 The Happstack Crash Course covers a vast majority of the happstack-server
 API. It covers the API in a logical manner and includes many downloadable,
 runnable examples. It is intended to be read start to finish, and to also be
 usable as a reference guide for specific How do I do XXX questions.

 Additionally, the guestbook example has been updated to a cleaner, more
 modern style of Happstack coding. It also has more comments/haddock
 documentation.

 Better API
 --

 During the process of documenting Happstack, many small improvements where
 made to the API. Once you try to document something stupid you realize how
 stupid it is and decided it would be good to fix it first ;)

 For example, the Cookie API now makes it more obvious how to create session
 cookies vs persistent cookies. And makes it obvious how to expire a cookie.

 The functions for looking up values in the query string and require body no
 longer require the use of the RqData monad. You can use the look* functions
 directly in the ServerPart monad.

 If you do choose to use RqData, it now has an Applicative instance which can
 accummulate and report lookup errors.
 (http://happstack.blogspot.com/2010/10/is-rqdata-monad-still-needed.html)
 There are a bunch of other improvements to request data handling documented
 here, http://happstack.com/docs/crashcourse/RqData.html.

 Easier Install
 --

 In order to make Happstack easier to install we have removed as many
 dependencies as possible. happstack-data no longer depends on
 happstack-util, which makes it easier to install happstack-data or
 happstack-state with out the rest of the framework. HSP and HStringTemplate
 support has been moved into *optional* happstack-hsp and
 happstack-hstringtemplate packages.

 New Features
 

 Happstack also has a number of new features including:

  - support for Heist templates
  (http://happstack.com/docs/crashcourse/Templates.html#helloheist)
  - support for Hamlet templates
  - improved environment for extracting query string and form values