This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "snap-website".

The branch, master has been updated
       via  629c49bdc73d59ce7645300042e24f60cc492c3b (commit)
      from  63796b50cecae7151630043321dc23bdaa380b49 (commit)


Summary of changes:
 blogdata/content/2011/02/05/snap-0.4-released.md |  110 +++++++++++++--------
 1 files changed, 68 insertions(+), 42 deletions(-)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 629c49bdc73d59ce7645300042e24f60cc492c3b
Author: Gregory Collins <[email protected]>
Date:   Sun Feb 6 10:37:26 2011 -0500

    Tweak release announcement

diff --git a/blogdata/content/2011/02/05/snap-0.4-released.md 
b/blogdata/content/2011/02/05/snap-0.4-released.md
index e5653ef..c1d8fcd 100644
--- a/blogdata/content/2011/02/05/snap-0.4-released.md
+++ b/blogdata/content/2011/02/05/snap-0.4-released.md
@@ -1,62 +1,88 @@
 | title: Announcing: Snap Framework v0.4
 | author: Gregory Collins <[email protected]>
-| published: 2011-02-05T19:15:00+0100
-| updated: 2011-02-05T19:15:00+0100
+| published: 2011-02-06T10:30:00-0500
+| updated: 2011-02-06T10:30:00-0500
 | summary: Release notes for Snap 0.4, a new major version of the Snap 
Framework.
 
-The Snap team is proud to announce the release of Snap 0.4.  Here is what
-we've been up to:
+The Snap team is proud to announce the release of Snap 0.4, containing a whole
+bunch of nifty new features. Here is what we've been up to:
 
 
 ## New Features
 
-  - Heist now uses the xmlhtml library for parsing and rendering templates.
-    This makes it possible to include inline javascript/css in templates.
-    Check out Chris Smith's [blog
-post](http://cdsmith.wordpress.com/2011/02/05/html-5-in-haskell/) for more
-    information.
-
-  - Along with the change to xmlhtml, we decided to convert Heist to use Text
-    instead of ByteString.  This breaks old code, but is the right thing to do
-    rather than just assume UTF8 encoding.
-
-  - Snap now has support for file uploads and the multipart/form-data content
-    type.  We put significant effort into preventing denial of service attacks
-    and providing built-in policy controls for things like maximum allowable
-    file size, upload timeouts, minimum upload speed, etc.
-
-  - The web server now uses blaze-builder to generate responses.  This gives
-    the server a significant performance improvement.  However, this will
-    break any existing code making direct use of the output enumerator.
-
-  - Dynamic recompilation now only rebuilds the project when files actually
-    change.  Rebuilds automatically destroy any in-memory server-side state
-    not persisted to disk.  Previously, this happened on every request, which
-    made stateful websites essentially unusable in development mode.  Now
-    state will be preserved across requests as long as the project files are
-    not changed on disk.
-
-  - File serving has been improved to automatically generate directory
-    indexes.  The new code also provides configurable lists of index files,
-    pluggable auto-generated indexes with a nice default look-and-feel, and
-    allows the user to write dynamic handlers.  These handlers can be used to
-    modify trailing slashes or perform arbitrary transformations based on file
-    type or file content on the fly.
+  - Heist now uses the brand new
+    [xmlhtml](http://hackage.haskell.org/package/xmlhtml) HTML5 parser for
+    parsing and rendering templates. This eliminates our dependency on XML and
+    makes it possible to include inline javascript/css in templates.  Check out
+    Chris Smith's [blog
+    post](http://cdsmith.wordpress.com/2011/02/05/html-5-in-haskell/) for more
+    information about xmlhtml.
+
+  - Along with the change to xmlhtml, we decided to convert Heist to use
+    [Text](http://hackage.haskell.org/package/text) instead of
+    [ByteString](http://hackage.haskell.org/package/bytestring). This is a
+    backwards-incompatible change which breaks old code, but which we feel is
+    the right thing to do.
+
+  - Snap now has support for *file uploads* (!) and the `multipart/form-data`
+    content type. Snap's file upload support uses iteratees to stream uploaded
+    data and comes with a convenience function to writeuploaded files to a
+    temporary directory. We put significant effort into preventing denial of
+    service attacks and providing policy controls for things like maximum
+    allowable file size, upload timeouts, minimum upload speed, etc.
+
+  - The web server now uses
+    [blaze-builder](http://hackage.haskell.org/package/text) in the output
+    response body `Enumerator`.  Besides being significantly faster for most
+    workloads than `ByteString` enumeration, this allowed us to save several
+    copies within the server code, giving us a moderate performance
+    improvement. However, this will break any existing code making direct use
+    of the output enumerator rather than using convenience functions like
+    `writeBS`. We encourage users who are building up large responses out of
+    lots of little bytestring chunks to consider switching their code to using
+    `Builder` and `writeBuilder` to get a speed boost.
+
+  - The "development mode" of projects built using our
+    [snap](http://hackage.haskell.org/package/snap) project starter is now
+    quite a bit smarter. The 0.3 version used
+    [hint](http://hackage.haskell.org/package/hint) to interpret web handlers
+    on-the-fly, but it re-interpreted the code on each request, making keeping
+    in-memory state between requests impossible. The development mode now only
+    rebuilds the project when files actually change. State will now be
+    preserved across requests as long as the project files are not changed on
+    disk.
+
+  - Our file serving code has been substantially improved/rewritten. The new
+    code can automatically generate stylable/themable directory indexes,
+    provides configurable lists of index files, and allows the user to plug in
+    dynamic handlers. These handlers can be used to modify trailing slashes or
+    perform arbitrary transformations based on file type or file content on the
+    fly.
+
+  - It is now possible for user handlers to modify socket timeouts, using the
+   `setTimeout` function. This (finally) makes it possible to have long-running
+   request handlers.
+
 
 ## Bugfixes/Improvements
 
-  - We no longer log "thread killed" messages unnecessarily in the simple
-    backend.
+  - Debugging support in
+    [snap-core](http://hackage.haskell.org/package/snap-core) is now turned
+    *off* by default, as it involves too much of a performance impact. Turning
+    on debug support results in a ~25% performance penalty. To turn debugging
+    output back on, pass the `-f debug` flag when installing `snap-core`.
 
-  - Added an API function for modifying socket timeouts.  This makes it
-    possible to have long-running request handlers.
+  - Bugfix: we no longer log spurious "thread killed" messages in the simple
+    backend under HTTP/1.0.
 
-  - Added catchFinishWith function.
+  - Added `catchFinishWith` function.
 
   - Changed cookie interface to expose cookies in the response as a map for
     easier manipulation.
 
+
+## An article about Snap
+
 Also, in January, IEEE Internet Computing magazine featured the Snap Framework
 in their column "The Functional Web".  Check out the article
 [here](http://steve.vinoski.net/blog/2011/01/21/column-on-the-snap-framework/).
-
-----------------------------------------------------------------------


hooks/post-receive
-- 
snap-website
_______________________________________________
Snap mailing list
[email protected]
http://mailman-mail5.webfaction.com/listinfo/snap

Reply via email to