News
====

0.3c4
-----

 * Characters <, >, and & are no longer escaped when they appear
   within a CDATA section in XHTML output mode.

 * The theme's doctype is now given priority over the content
   doctype, to give users more control over the output format.

0.3c3
-----

 * The paste.deploy configuration and middleware factory now accept a `theme_uri`
   parameter.

   If used, this will be the global default theme uri.  It will be used if no
   theme is defined within the ruleset.

 * Internal subrequests that return non-200 response codes are now retried as external
   HTTP requests. (#16)

 * Request/response matching in <rule> elements now work. (#6)

 * <meta http-equiv="Content-Type"> tags are no longer stripped from documents.
   Instead, they are always included in the output of Deliverance, with a default
   charset of ASCII. (#34)

 * CDATA sections in XHTML documents are left as-is instead of being incorrectly
   escaped. (#36)

 * Before applying the rules, Deliverance now moves the <meta> tag with a charset
   declaration to be the first child of the <head> element, if both are present.
   This ensures that non-ASCII characters in the <head> are converted to the correct
   HTML sequences. (#12)

 * There is now a garbage-collecting WSGI middleware `deliverance.garbagecollect`,
   disabled by default, which calls `gc.collect()` after every request. This was
   added after a report (unconfirmed) of potential memory leaks when using some
   versions of lxml. (#22)

   You can use it with `deliverance-proxy --garbage-collect` or, in paste.deploy
   configurations, filter your app with `use = egg:Deliverance#garbagecollect`.

0.3c2
-----

* FileRuleGetter now reloads the rules file on every request if Deliverance is initialized
  with debug=true.

* If the content document declares an XHTML doctype, then the output will be valid XML. (#28)

* If the content document declares any doctype, that doctype will be preserved in the output.
  Otherwise, the theme's doctype will be used if present. If neither document has a doctype,
  the default is HTML 4.0 Transitional. (#28)

* rule_uri can now be a file:// URI

* You can now set execute_pyref=true in Paste Deploy .ini file to allow pyrefs in the rules when
  using the Deliverance middleware directly. 

* Fixed "join_attributes tries to join on list and set which is not valid" (#18)

* Fixed util.filetourl breakage on Windows. (#13)

* Added XInclude support in rules file.

* Empty links in the theme like <a href=""> both work now; in the last release Deliverance would
  throw an error when trying to parse these. (#31)

* When fetching the content document, responses with Content-Length:0 will be passed through to
  the client. Previously these would cause an error. (#25)

0.3 prerelease
--------------

* Add a monkeypatch for Paste to work around a long unsolved robustness bug.

* Correctly handle in-document links in the theme. Patch from Michael Dunstan.
  This fixes #19 and #31.

* Added :class:`deliverance.middleware:FileRuleGetter`

* Added `Paste Deploy <http://pythonpaste.org/deploy/>`_ entry point
  (``egg:Deliverance``).

* Plenty more
