-----------------
Deprecations:
- The ``fast_translate`` function has been deprecated. Instead, the
default translation function is now always a function that simply
interpolates the mapping onto the message default or id.
The motivation is that since version 2.9, the ``context`` argument
is non-trivial: the ``econtext`` mapping is passed. This breaks an
expectation on the Zope platform that the ``context`` parameter is
the HTTP request. Previously, with Chameleon this parameter was
simply not provided and so that did not cause issues as such.
- The ``ast24`` module has been renamed to ``ast25``. This should help
clear up any confusion that Chameleon 2.x might be support a Python
interpreter less than version 2.5 (it does not).
Features:
- The ``ProxyExpr`` expression class (and hence the ``load:``
expression type) is now a TALES-expression. In practical terms, this
means that the expression type (which computes a string result using
the standard ``"${...}"`` interpolation syntax and proxies the
result through a function) now supports fallback using the pipe
operator (``"|"``). This fixes issue 128.
- An attempt to interpolate using the empty string as the expression
(i.e. ``${}``) now does nothing: the string ``${}`` is simply output
as is.
- Added support for adding, modifying, and removing attributes using a
dictionary expression in ``tal:attributes`` (analogous to Genshi's
``py:attrs`` directive)::
<div tal:attributes="name value; attrs" />
In the example above, ``name`` is an identifier, while ``value`` and
``attrs`` are Python expressions. However, ``attrs`` must evaluate
to a Python dictionary object (more concisely, the value must
implement the dictionary API-methods ``update()`` and ``items()``).
Optimizations:
- In order to cut down on the size of the compiled function objects,
some conversion and quoting statements have been put into
functions. In one measurement, the reduction was 35%. The benchmark
suite does *not* report of an increased render time (actually
slightly decreased).
Bugfixes:
- An exception is now raised if a trivial string is passed for
``metal:fill-slot``. This fixes issue 89.
- An empty string is now never translated. Not really a bug, but it's
been reported in as an issue (92) because some translation
frameworks handle this case incorrectly.
- The template module loader (file cache) now correctly encodes
generated template source code as UTF-8. This fixes issue 125.
- Fixed issue where a closure might be reused unsafely in nested
template rendering.
- Fixed markup class ``__repr__`` method. This fixes issue 124.
- Added missing return statement to fix printing the non-abbreviated
filename in case of an exception.
[tomo]