The major new feature in this release is native support for Edge Side Includes (ESI version 1.0). This is still experimental so you will need to enable it in the ariadne config ( lib/config/ariadne.phtml ) to use it. Edge Side Includes allow you to cache different parts of a single webpage differently - this way a page which is mostly static but has a small part that varies can still be mostly cached. Just the part that varies needs to be executed instead of read from the cache. When ESI support is enabled, the loader automatically parses ESI instructions in the html output and executes them, just like a Proxy server like Squid. You can read more about Ariadne's ESI features in docs/mod_esi.txt and about ESI in general at http://en.wikipedia.org/wiki/Edge_Side_Includes.
Another important change is that starting now Ariadne automatically starts an output buffer for each request. We call this 'Post Processing'. This means that output will only be sent when the entire output is assembled. It also means that you can change the content-type or any other header at any point in your templates. Since Ariadne's header and content-type methods fail silently when the headers have already been sent this means that after upgrading your sites may sent output as text/css instead of text/html and visitors will see the html source code instead of a rendered webpage. This means that you haven't been carefull about only sending the text/css content type in a css template when it is called as a seperate request. The correct solution is to make sure you do not add a css template inline with the <style> tag and use the same template with the <link> tag. That way you know whether or not to set the content-type for the output. The quick fix to make your site work again as it was is to disable the automatic output buffer for your site by disabling Post Processing with the new method 'ldDisablePostProcessing()'. Call this anywhere in a pinp template and the output buffer will be closed, pending output will be sent and everything works as previously. By adding this call in a config.ini template for a site, all output for the entire site will be generated like it did in Ariadne 8.0.
Some smaller changes are among others that the ar\http client now returns the status code as a seperate return value. We've added a visual feedback when uploading files in the Ariadne backend. The editor.ini settings for the htmlcleaner and tidy now also affect the summary fields in objects. We've also changed the PHP error_reporting level in the ariadne.phtml config so Ariadne will work with PHP 5.4. You will need to do this manually when upgrading an existing ariadne installation to PHP 5.4 or higher. The change removes the E_STRICT setting.
In addition we've fixed a number of bugs. The most important fixes are in how objects are saved in the store - we've added a number of checks to prevent the store from becoming inconsistent - e.g. by fixing the case of paths and by checking that an object always has a valid parent. We found a few places where input wasn't correctly escaped before display, which would trigger Ariadne's catch-all XSS prevention ( see: http://www.ariadne-cms.org/index.html/news/xss_detection/ ). We fixed a problem with importing export files including grants - they are now correctly set even when the import path differs from the original path. The user.notfound.html template has become more usable, since any query arguments send to it can be kept and passed on to another template or added to a redirect url. And finally we've made the entire import/export system more robust by handling some edge error cases better.
As always you can see all the changes by reading the CHANGES file or by browsing to http://www.ariadne-cms.org/download/changes/