added entry for jinja 1.3 in CHANGES
[jinja2.git] / CHANGES
1 Jinja Changelog
2 ===============
3
4 Version 1.3
5 -----------
6 (codename to be selected, release around February 2007)
7
8 Version 1.2
9 -----------
10 (codename to be hatsuyuki, released Nov 17th 2007)
11
12 .. admonition:: Backwards Incompatible Changes
13
14     - `call` is a keyword now
15     - the internal parser AST changed
16     - `extends` must be the first tag in a template
17     - the tuple literal yields tuples now, instead of lists.
18
19 - environments now have a `translator_factory` parameter that allows
20   to change the translator without subclassing the environment.
21
22 - fixed bug in buffet plugin regarding the package loader
23
24 - once again improved debugger.
25
26 - added `groupby` filter.
27
28 - added `sameas` test function.
29
30 - standalone parser. Jinja does not use the python parser any more and will
31   continue having the same semantics in any future python versions. This
32   was done in order to simplify updating Jinja to 2.6 and 3.0 and to support
33   non python syntax.
34
35 - added support for ``expr1 if test else expr2`` (conditional expressions)
36
37 - ``foo.0`` as alias for ``foo[0]`` is possible now. This is mainly for
38   django compatibility.
39
40 - the filter operators has a much higher priority now which makes it
41   possible to do ``foo|filter + bar|filter``.
42
43 - new AST. the return value of `Environment.parse` is now a Jinja AST and not
44   a Jinja-Python AST. This is also the only backwards incompatible change but
45   should not affect many users because this feature is more or less
46   undocumented and has few use cases.
47
48 - tuple syntax returns tuples now and not lists any more.
49
50 - the print directive and ``{{ variable }}`` syntax now accepts and implicit
51   tuple like the `for` and `cycle` tags. (``{{ 1, 2 }}`` is an implicit alias
52   for ``{{ (1, 2) }}` like ``{% for a, b in seq %}`` is for
53   ``{% for (a, b) in seq %}``.
54
55 - tests called with *one* parameter don't need parentheses. This gives a more
56   natural syntax for the `sameas` test and some others:
57   ``{{ foo is sameas bar }}`` instead of ``{{ foo is sameas(bar) }}``. If you
58   however want to pass more than one argument you have to use parentheses
59   because ``{{ foo is sometest bar, baz }}`` is handled as
60   ``{{ (foo is sometest(bar), baz) }}``, so as tuple expression.
61
62 - removed support for octal character definitions in strings such as
63   ``'\14'``, use ``'\x0c'`` now.
64
65 - added regular expression literal. ``@/expr/flags`` equals
66   ``re.compile(r'(?flags)expr')``. This is useful for the `matching` test and
67   probably some others.
68
69 - added set literal. We do not use python3's {1, 2} syntax because
70   this conflicts with the dict literal. To be compatible with the regex
71   literal we use ``@(1, 2)`` instead.
72
73 - fixed bug in `get_attribute` that disallowed retreiving attributes of objects
74   without a `__class__` such as `_sre.SRE_Pattern`.
75
76 - addded `django.contrib.jinja` which provides advanced support for django.
77   (thanks Bryan McLemore)
78
79 - debugger is now able to rewrite the whole traceback, not only the first
80   frame. (requires the optional debugger c module which is compiled
81   automatically on installation if possible)
82
83 - if the set that is postfixed with a bang (!) it acts like the python 3
84   "nonlocal" keyword. This means that you can now override variables
85   defined in the outer scope from within a loop.
86
87 - ``foo ~ bar`` is now a simpler alternative to ``foo|string + bar|string``
88
89 - `PackageLoader` can now work without pkg_resources too
90
91 - added `getattribute` and `getitem` filter.
92
93 - added support for the `pretty` library.
94
95 - changed the way the `MemcachedLoaderMixin` creates the class so that it's
96   possible to hook your own client in.
97
98
99 Version 1.1
100 -----------
101 (codename: sinka, released Jun 1, 2007)
102
103 - blocks now support ``{{ super() }}`` to render the parent output.
104
105 - debugging system improved, smaller filesize for the cached files.
106   Debugging works now well for any module using linecache.
107
108 - ``{{ debug() }}`` can now be used to get a list of filters and
109   tags.
110
111 - the template lexer keeps not track of brace, parenthesis and
112   bracket balance in order to not break variable tags apart if they
113   are configured to look like this: ``${expr}``. This also fixes
114   the problem with nested dicts in variable expressions.
115
116 - it's now possible to configure the variable blocks to look the
117   same as the block delimiters. Thus you can set the syntax to something
118   like ``{ / }`` for both blocks and variables.
119
120 - added whitespace management system for the template designer.
121
122 - some small bugfixes.
123
124 - improved security system regarding function calls and variable
125   assignment in for loops.
126
127 - added `lipsum` function to generate random text.
128
129 - strings without unicode characters are processed as binary strings now
130   to workaround problems with `datetime.strftime` which only accepts
131   binary strings.
132
133 - it's now possible to use newlines in string literals
134
135 - developer friendly traceback is now toggleable
136
137 - the variable failure is now pluggable by replacing the undefined
138   singleton for an environment instance
139
140 - fixed issue with old-style classes not implementing `__getitem__`
141   (thanks to Axel Böhm for discovering that bug)
142
143 - added a bunch of new docstrings to the Jinja classes. Makes fun now to
144   use pydoc :-)
145
146 - fixed severe memcaching bug. Formerly it wasn't possible to use memcaching
147   without enabling disk cache.
148
149 - fixed a bug that allowed users to override the special names `_`, `true` etc.
150
151 - added `batch` and `slice` filters for batching or slicing sequences
152
153 - added `sum`, `abs`, `round` and `sort` filters. This fixes #238
154
155 - added `striptags` and `xmlattr` filters for easier SGML/XML processing
156
157 - the trans tag does not need explicit naming for variables with the same
158   name any more. You can now use ``{% trans foo %}`` instead of the verbose
159   version ``{% trans foo=foo %}``.
160
161 - reimplemented Buffet plugin so that it works at least for pylons
162
163 - added `Environment.get_translations_for_string`
164
165 - fixed a bug in the parser that didn't unescape keyword arguments. (thanks
166   to Alexey Melchakov for reporting)
167
168 - You can now use the environment to just tokenize a template. This can
169   be useful for syntax highlighting or other purposes.
170
171 - added optional C-implementation of the context baseclass.
172
173 - you can now use optional parentheses around macro defintions. Thus it's
174   possible to write ``{% macro foo(a, b, c) %}`` instead of ``{% macro
175   foo a, b, c %}``.
176
177 - additional macro arguments now end up in `varargs`.
178
179 - implemented the `{% call %}` block. `call` and `endcall` can still be used
180   as identifiers until Jinja 1.3
181
182 - it's now possible to stream templates.
183
184 - fixed a corner case when defining a block inside of a condition
185
186 - the cached loader mixin is now able to cache multiple templates from
187   different loaders in the same cache folder.
188
189 - Translatable strings returned by ``_()`` will leave their string formatting
190   signs untouched. Thanks to Stefan Ebner for reporting.
191
192 - ``{% block name "data" %}`` is now an alias for
193   ``{% block name %}data{% endblock %}``. Note that the second argument can
194   be an expression. As soon as you specify an expression as second argument
195   the closing tag has to be omitted.
196
197 - It's now possible to iterate over iterators additionally to sequences.
198   If the iterator is inifite it will crash however, so makes sure you don't
199   pass something like that to a template!
200
201 - added `rendetemplate` to render included templates in an isolated
202   environment and get the outout back.
203
204 - added `simplefilter` decorator.
205
206 - improved ChoiceLoader error reporting (thanks to Bryan McLemore)
207
208 - fixed extended slicing
209
210 - reworked loader layer. All the cached loaders now have "private" non cached
211   baseclasses so that you can easily mix your own caching layers in.
212
213 - added `MemcachedLoaderMixin` and `MemcachedFileSystemLoader` contributed
214   by Bryan McLemore.
215
216
217 Version 1.0
218 -----------
219 (codename: siyutusan, released Mar 23, 2007)
220
221 - Initial release