Edgewall Software

source: tags/0.4.3/ChangeLog

Last change on this file was 683, checked in by cmlenz, 16 years ago

Ported [682] to 0.4.x branch.

  • Property svn:eol-style set to native
File size: 14.9 KB
Line 
1Version 0.4.3
2http://svn.edgewall.org/repos/genshi/tags/0.4.3/
3(?, from branches/stable/0.4.x)
4
5 * The I18n filter no longer extracts or translates literal strings in
6   attribute values that also contain expressions.
7 * Added `loader_callback` option to plugin interface, which allows specifying
8   a callback function that the template loader should invoke whenever a new
9   template is loaded (ticket #130). Note that the value for this option can
10   not be specified as a string, only as an actual function object, which means
11   it is not available for use through configuration files.
12 * The I18n filter now extracts messages from gettext functions even inside
13   ignored tags (ticket #132).
14 * The HTML sanitizer now strips any CSS comments in style attributes, which
15   could previously be used to hide malicious property values.
16 * The HTML sanitizer now also removes any HTML comments encountered, as those
17   may be used to hide malicious payloads targetting a certain "innovative"
18   browser that goes and interprets the content of specially prepared comments.
19 * Attribute access in template expressions no longer silently ignores
20   exceptions other than `AttributeError` raised in the attribute accessor.
21
22
23Version 0.4.2
24http://svn.edgewall.org/repos/genshi/tags/0.4.2/
25(Jun 20, from branches/stable/0.4.x)
26
27 * The `doctype` parameter of the markup serializers now also accepts the "name"
28   of the doctype as string, in addition to the `(name, pubid, sysid)` tuple.
29 * The I18n filter was not replacing the original attributes with the
30   translation, but instead adding a second attribute with the same name.
31 * `TextTemplate` can now handle unicode source (ticket #125).
32 * A `<?python ?>` processing instruction containing trailing whitespace no
33   longer causes a syntax error (ticket #127).
34 * The I18n filter now skips the content of elements that have an `xml:lang`
35   attribute with a fixed string value. Basically, `xml:lang` can now be used
36   as a flag to mark specific sections as not needing localization.
37 * Added plugin for message extraction via Babel (http://babel.edgewall.org/).
38
39
40Version 0.4.1
41http://svn.edgewall.org/repos/genshi/tags/0.4.1/
42(May 21 2007, from branches/stable/0.4.x)
43
44 * Fix incorrect reference to translation function in the I18N filter.
45 * The `ET()` function now correctly handles attributes with a namespace.
46 * XML declarations are now processed internally, as well as written to the
47   output when XML serialization is used (ticket #111).
48 * Added the functions `encode()` and `get_serializer()` to the `genshi.output`
49   module, which provide a lower-level API to the functionality previously only
50   available through `Stream.render()` and `Stream.serialize()`.
51 * The `DocType` class now has a `get(name)` function that returns a `DOCTYPE`
52   tuple for a given string.
53 * Added frameset variants to the `DocType` constants for HTML 4.01 and XHTML
54   1.0.
55 * Improved I18n extraction for pluralizable messages: for any translation
56   function with multiple string arguments (such as ``ngettext``), a single
57   item with a tuple of strings is yielded, instead an item for each string
58   argument.
59 * The `HTMLFormFiller` stream filter no longer alters form elements for which
60   the data element contains no corresponding item.
61 * Code in `<?python ?>` processing instructions no longer gets the special
62   treatment as Python code in template expressions, i.e. item and attribute
63   access are no longer interchangeable (which was broken in a number of ways
64   anyway, see ticket #113). This change does not affect expressions.
65 * Numerous fixes for the execution of Python code in `<?python ?>` processing
66   instructions (tickets #113 and #114).
67 * The `py:def` (and `#def`) directive now supports "star args" (i.e. `*args`
68   and `**kwargs`) in the function declaration (ticket #116).
69
70
71Version 0.4
72http://svn.edgewall.org/repos/genshi/tags/0.4.0/
73(Apr 16 2007, from branches/stable/0.4.x)
74
75 * New example applications for CherryPy and web.py.
76 * The template loader now uses a LRU cache to limit the number of cached
77   templates to a configurable maximum. Also, a race condition in the template
78   loader was fixed by adding locking.
79 * A new filter (genshi.filters.HTMLFormFiller) was added, which can populate
80   HTML forms based on a dictionary of values.
81 * The set of permitted tag and attribute names for the HTMLSanitizer can now
82   be configured per instance.
83 * The template engine plugin now supports a range of options for
84   configuration, for example to set the default serialization method, the
85   default output encoding, or the default DOCTYPE.
86 * The ElementTree adaptation function `ET()` has moved into the `genshi.input`
87   module.
88 * Allow `when` directives to omit the test expression as long as the
89   associated choose directive does have one. In that case, the when branch is
90   followed if the expression of the choose directive evaluates to a truth
91   value.
92 * Unsuccessful attribute or item lookups now return `Undefined` objects for
93   nicer error messages.
94 * Split up the `genshi.template` module into multiple modules inside the new
95   `genshi.template` package.
96 * Results of expression evaluation are no longer implicitly called if they
97   are callable.
98 * Instances of the `genshi.core.Attrs` class are now immutable (they are
99   subclasses of `tuple` instead of `list`).
100 * `MarkupTemplate`s can now be instantiated from markup streams, in addition
101   to strings and file-like objects (ticket #69).
102 * Improve handling of incorrectly nested tags in the HTML parser.
103 * Template includes can now be nested inside fallback content.
104 * Expressions can now contain dict literals (ticket #37).
105 * It is now possible to have one or more escaped dollar signs in front of a
106   full expression (ticket #92).
107 * The `Markup` class is now available by default in template expressions
108   (ticket #67).
109 * The handling of namespace declarations in XML/XHTML output has been improved.
110 * The `Attrs` class no longer automatically wraps all attribute names in
111   `QName` objects. This is now the responsibility of whoever is instantiating
112   `Attrs` objects (for example, stream filters and generators).
113 * Python code blocks are now supported using the `<?python ?>` processing
114   instruction (ticket #84).
115 * The way errors in template expressions are handled can now be configured. The
116   option `LenientLookup` provides the same forgiving mode used in previous
117   Genshi versions, while `StrictLookup` raises exceptions when undefined
118   variables or members are accessed. The lenient mode is still the default in
119   this version, but that may change in the future. (ticket #88)
120 * If a variable is not necessarily defined at the top level of the template
121   data, the new built-in functions `defined(key)` and `value_of(key, default)`
122   can be used so that the template also works in strict lookup mode. These
123   functions were previously only available when using Genshi via the template
124   engine plugin (for compatibility with Kid).
125 * `style` attributes are no longer allowed by the `HTMLSanitizer` by default.
126   If they are explicitly added to the set of safe attributes, any unicode
127   escapes in the attribute value are now handled properly.
128 * Namespace declarations on conditional elements (for example using a `py:if`
129   directive`) are no longer moved to the following element when the element
130   originally carrying the declaration is removed from the stream (ticket #107).
131 * Added basic built-in support for internationalizing templates by providing
132   a new `Translator` class that can both extract localizable strings from a
133   stream, and replace those strings with their localizations at render time.
134   The code for this was largely taken from previous work done by Matt Good
135   and David Fraser.
136
137
138Version 0.3.6
139http://svn.edgewall.org/repos/genshi/tags/0.3.6/
140(Dec 11 2006, from branches/stable/0.3.x)
141
142 * The builder API now accepts streams as children of elements and fragments.
143
144
145Version 0.3.5
146http://svn.edgewall.org/repos/genshi/tags/0.3.5/
147(Nov 22 2006, from branches/stable/0.3.x)
148
149 * Fix XPath traversal in match templates. Previously, `div/p` would be treated
150   the same as `div//p`, i.e. it would match all descendants and not just the
151   immediate children.
152 * Preserve whitespace in HTML `<pre>` elements also when they contain child
153   elements.
154 * Match templates no longer match their own output (ticket #77).
155 * Blank lines before directives in text templates are now preserved as
156   expected (ticket #62).
157
158
159Version 0.3.4
160http://svn.edgewall.org/repos/genshi/tags/0.3.4/
161(Nov 2 2006, from branches/stable/0.3.x)
162
163 * The encoding of HTML and XML files, as well as markup and text templates,
164   can now be specified. Also, the encoding specified in XML declarations is
165   now respected unless an expiclit encoding is requested.
166 * Expressions used as arguments for `py:with`, `py:def`, and `py:for`
167   directives can now contain non-ASCII strings.
168
169
170Version 0.3.3
171http://svn.edgewall.org/repos/genshi/tags/0.3.3/
172(Oct 16 2006, from branches/stable/0.3.x)
173
174 * Fixed bug introduced in 0.3.2 that broke the parsing of templates which
175   declare the same namespace more than once in a nested fashion.
176 * Fixed the parsing of HTML entity references inside attribute values, both
177   in the `XMLParser` and the `HTMLParser` classes.
178 * Some changes to usage of absolute vs. relative template paths to ensure that
179   the filenamed-keyed cache employed by the TemplateLoader doesn't mix up
180   templates with the same name, but from different subdirectories.
181
182
183Version 0.3.2
184http://svn.edgewall.org/repos/genshi/tags/0.3.2/
185(Oct 12 2006, from branches/stable/0.3.x)
186
187 * Exceptions from templates now contain the absolute path to the template file
188   when a search path is used. This enables tracebacks to display the line in
189   question.
190 * The template engine plugin now provides three different types: "genshi" and
191   "genshi-markup" map to markup templates, while "genshi-text" maps to text
192   templates.
193 * Fixed the namespace context used by XPath patterns in py:match templates.
194   The were erroneously using the namespace context of the elements being
195   matched, where they should rather use the context in which they were
196   defined.
197 * The contents of `<script>` and `<style>` elements are no longer escaped when
198   serializing to HTML but declaring the XHTML namespace in the template.
199 * Improved error message raised when using the `py:for` directive on an object
200   that is not iterable (ticket #60).
201 * Fixed the XPath function `starts-with()` which was always returning true
202   (ticket #61).
203
204
205Version 0.3.1
206http://svn.edgewall.org/repos/genshi/tags/0.3.1/
207(Sep 22 2006, from branches/stable/0.3.x)
208
209 * Includes and user-defined filters were not getting the correct context data
210   when used inside a match template (ticket #56).
211 * XPath patterns using the union operator (`|`) were returning only partial
212   results in some cases.
213
214
215Version 0.3
216http://svn.edgewall.org/repos/genshi/tags/0.3.0/
217(Sep 17 2006, from branches/stable/0.3.x)
218
219 * The project name was changed from "Markup" to "Genshi". See UPGRADE.txt
220   for upgrade instructions.
221 * Expression evaluation now differentiates between undefined variables and
222   variables that are defined but set to `None`. This also means that local
223   variables can override built-ins even if the local variable are set to
224   `None` (ticket #36).
225 * The plugin implementation now makes more functions available for use inside
226   templates: XML(), HTML(), defined(), and value-of(). These are mostly for
227   migration from Kid.
228 * The parsing of `py:with` directives has been improved: you can now assign
229   to multiple names, and semicolons inside string literals are treated as
230   expected.
231 * Generator expressions can now be used in template expressions (ticket #16).
232 * Added serialization to plain text (ticket #41).
233 * Calling functions from template expressions with *args and/or **kwargs
234   now works correctly (ticket #42).
235 * The `TemplateLoader` class and the `Template` instances that it manages are
236   now thread-safe, as they no longer keep any state related to the current
237   processing context.
238 * Stream filters and serializers can now be applied using the "pipe" (bitwise
239   or) operator "|".
240 * The execution of named template functions (`py:def`) no longer silently
241   swallows TypeError exceptions (ticket #44).
242 * The XML Parser now correctly handles unicode input (ticket #43).
243 * HTML entities can now be used in templates without having to declare an HTML
244   document type.
245 * Error reporting on undefined entities has been fixed.
246 * Fix traversal of substreams by XPath expressions. For example, the path
247   '*/*' no longer matches non-immediate child elements, and '@*' no longer
248   matches the attributes of descendants.
249 * Fixes for `py:match` which would get confused when it should be applied
250   to multiple elements (ticket #49).
251 * Using namespace prefixes in XPath expressions is now supported.
252 * Expressions now correctly handle slices (ticket #51).
253 * A simple text-based template language is now included for generating
254   plain text output (ticket #47).
255
256
257Version 0.2
258http://svn.edgewall.org/repos/genshi/tags/0.2.0/
259(Aug 22 2006, from branches/stable/0.2.x)
260
261 * XPath syntax errors now contain position info (ticket #20).
262 * Errors in expression evaluation now contain the correct line number in the
263   template (ticket #22).
264 * <script> and <style> element contents are no longer escaped when using HTML
265   serialization (ticket #24).
266 * In some cases expressions in templates did not get interpolated (ticket
267   #26).
268 * CDATA sections are now passed through the pipeline and serialized correctly.
269   That allows using <script> or <style> elements in XHTML output that is still
270   compatible with HTML user agents.
271 * The XHTML serializer now correctly handles elements in foreign namespaces
272   (such as SVG or MathML).
273 * Fixed relative includes in templates on Windows (ticket #27).
274 * Output can be encoded using legacy codecs such as ISO-8859-1. Any character
275   not representable in the chosen encoding gets replaced by the corresponding
276   XML character reference.
277 * String literals in XPath expressions that contain spaces are now parsed
278   as expected.
279 * Added support for the XPath functions boolean(), ceiling(), concat(),
280   contains(), false(), floor(), normalize-space(), number(), round(),
281   starts-with(), string-length(), substring(), substring-after(),
282   substring-before(), translate(), and true().
283 * Non-ASCII characters in expressions should now be handled correctly (ticket
284   #29).
285 * Default values for arguments of template functions now also work with
286   constants and complex expressions (they only worked for string or number
287   literals before).
288 * XPath expressions in now support XPath variables ($var) in predicates
289   (ticket #31).
290 * Expressions in templates can now span multiple lines if they are enclosed
291   in curly braces.
292 * py:def macros can now be invoked from within expressions inside attribute
293   values (ticket #34).
294
295
296Version 0.1
297http://svn.edgewall.org/repos/genshi/tags/0.1.0/
298(Aug 3 2006, from branches/stable/0.1.x)
299
300 * First public release
Note: See TracBrowser for help on using the repository browser.