annotate doc/upgrade.txt @ 704:422d0607ba85 experimental-match-fastpaths

further performance improvements to MatchSet functionality - factor out MatchSet's State so that we dont' have to keep copying over the state every time we create a new child MatchSet. Also fixes a bug where we could get duplicate match indexes when a new match is created while evaluating an existing match Also, try to be lazy about creating the first MatchSet so that we don't hurt bigtable performance (i.e. when there are no py:matches in play at all)
author aflett
date Fri, 04 Apr 2008 16:57:27 +0000
parents af57b12e3dd2
children 5420fe9d99a9 d143dd73789b
rev   line source
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
1 Upgrading Genshi
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
2 ================
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
3
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
4
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
5 .. contents:: Contents
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
6 :depth: 2
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
7 .. sectnum::
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
8
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
9
592
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
10 Upgrading from Genshi 0.4.x to 0.5.x
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
11 ------------------------------------
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
12
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
13 Genshi 0.5 introduces a new, alternative syntax for text templates,
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
14 which is more flexible and powerful compared to the old syntax. For
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
15 backwards compatibility, this new syntax is not used by default,
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
16 though it will be in a future version. It is recommended that you
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
17 migrate to using this new syntax. To do so, simply rename any
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
18 references in your code to ``TextTemplate`` to ``NewTextTemplate``. To
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
19 explicitly use the old syntax, use ``OldTextTemplate`` instead, so
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
20 that you can be sure you'll be using the same language when the
592
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
21 default in Genshi is changed (at least until the old implementation is
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
22 completely removed).
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
23
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
24 The default error handling mode has been changed to "strict". This
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
25 means that accessing variables not defined in the template data will
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
26 now generate an immediate exception, as will accessing object
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
27 attributes or dictionary keys that don't exist. If your templates rely
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
28 on the old lenient behavior, you can configure Genshi to use that
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
29 instead. See the documentation for details on how to do that. But be
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
30 warned that lenient error handling may be removed completely in a
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
31 future release.
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
32
703
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
33 There has also been a subtle change to how ``py:match`` templates are
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
34 processed: in previous versions, all match templates would be applied
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
35 to the content generated by the matching template, and only the
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
36 matching template itself was applied recursively to the original
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
37 content. This behavior resulted in problems with many kinds of
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
38 recursive matching, and hence was changed for 0.5: now, all match
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
39 templates declared before the matching template are applied to the
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
40 original content, and match templates declared after the matching
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
41 template are applied to the generated content. This change should not
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
42 have any effect on most applications, but you may want to check your
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
43 use of match templates to make sure.
af57b12e3dd2 merge in trunk up through r818 - fundamentally changed the way MatchSet works, but actually is more consistent now
aflett
parents: 606
diff changeset
44
592
1da8de3e5e51 Add a new syntax for text templates, which is available alongside the old syntax for now. The new syntax is more poweful and flexible, using Django-style directive notation.
cmlenz
parents: 452
diff changeset
45
336
7763f7aec949 Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents: 233
diff changeset
46 Upgrading from Genshi 0.3.x to 0.4.x
7763f7aec949 Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents: 233
diff changeset
47 ------------------------------------
7763f7aec949 Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents: 233
diff changeset
48
452
a89368769b82 Add `filters` package in `setup.py`.
cmlenz
parents: 442
diff changeset
49 The modules ``genshi.filters`` and ``genshi.template`` have been
a89368769b82 Add `filters` package in `setup.py`.
cmlenz
parents: 442
diff changeset
50 refactored into packages containing multiple modules. While code using
a89368769b82 Add `filters` package in `setup.py`.
cmlenz
parents: 442
diff changeset
51 the regular APIs should continue to work without problems, you should
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
52 make sure to remove any leftover traces of the files ``filters.py``
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
53 and ``template.py`` in the ``genshi`` package on the installation
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
54 path (including the corresponding ``.pyc`` files). This is not
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
55 necessary when Genshi was installed as a Python egg.
336
7763f7aec949 Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents: 233
diff changeset
56
343
35189e960252 Remove automatic calling of expression evaluation results if they are callable. See [http://groups.google.com/group/genshi/browse_thread/thread/f515986760918d41 this mailing list thread].
cmlenz
parents: 336
diff changeset
57 Results of evaluating template expressions are no longer implicitly
35189e960252 Remove automatic calling of expression evaluation results if they are callable. See [http://groups.google.com/group/genshi/browse_thread/thread/f515986760918d41 this mailing list thread].
cmlenz
parents: 336
diff changeset
58 called if they are callable. If you have been using that feature, you
35189e960252 Remove automatic calling of expression evaluation results if they are callable. See [http://groups.google.com/group/genshi/browse_thread/thread/f515986760918d41 this mailing list thread].
cmlenz
parents: 336
diff changeset
59 will need to add the parenthesis to actually call the function.
35189e960252 Remove automatic calling of expression evaluation results if they are callable. See [http://groups.google.com/group/genshi/browse_thread/thread/f515986760918d41 this mailing list thread].
cmlenz
parents: 336
diff changeset
60
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
61 Instances of ``genshi.core.Attrs`` are now immutable. Filters
411
7d158f8f48ad Updated change log.
cmlenz
parents: 397
diff changeset
62 manipulating the attributes in a stream may need to be updated. Also,
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
63 the ``Attrs`` class no longer automatically wraps all attribute names
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
64 in ``QName`` objects, so users of the ``Attrs`` class need to do this
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
65 themselves. See the documentation of the ``Attrs`` class for more
411
7d158f8f48ad Updated change log.
cmlenz
parents: 397
diff changeset
66 information.
7d158f8f48ad Updated change log.
cmlenz
parents: 397
diff changeset
67
345
2aa7ca37ae6a Make `Attrs` instances immutable.
cmlenz
parents: 343
diff changeset
68
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
69 Upgrading from Markup
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
70 ---------------------
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
71
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
72 Prior to version 0.3, the name of the Genshi project was "Markup". The
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
73 name change means that you will have to adjust your import statements
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
74 and the namespace URI of XML templates, among other things:
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
75
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
76 * The package name was changed from "markup" to "genshi". Please
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
77 adjust any import statements referring to the old package name.
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
78 * The namespace URI for directives in Genshi XML templates has changed
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
79 from ``http://markup.edgewall.org/`` to
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
80 ``http://genshi.edgewall.org/``. Please update the ``xmlns:py``
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
81 declaration in your template files accordingly.
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
82
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
83 Furthermore, due to the inclusion of a text-based template language,
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
84 the class::
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
85
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
86 markup.template.Template
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
87
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
88 has been renamed to::
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
89
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
90 genshi.template.MarkupTemplate
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
91
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
92 If you've been using the Template class directly, you'll need to
606
37ff75bb4301 Changed the default error handling mode to "strict".
cmlenz
parents: 592
diff changeset
93 update your code (a simple find/replace should do—the API itself
233
88ec2b306296 * Added implementation of a simple text-based template engine. Closes #47.
cmlenz
parents:
diff changeset
94 did not change).
Copyright (C) 2012-2017 Edgewall Software