[Checkins] SVN: Sandbox/Chameleon/CHANGES.txt Blank slate.

Malthe Borch mborch at gmail.com
Mon Sep 15 17:32:48 EDT 2008


Log message for revision 91169:
  Blank slate.

Changed:
  U   Sandbox/Chameleon/CHANGES.txt

-=-
Modified: Sandbox/Chameleon/CHANGES.txt
===================================================================
--- Sandbox/Chameleon/CHANGES.txt	2008-09-15 21:25:36 UTC (rev 91168)
+++ Sandbox/Chameleon/CHANGES.txt	2008-09-15 21:32:47 UTC (rev 91169)
@@ -1,497 +1,8 @@
 Changelog
 =========
 
-Version 1.0dev
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Head
+~~~~
 
-  Package changes
 
-- Split out compiler to separate egg. [malthe]
 
-  Backwards incompatibilities
-
-- Moved contents of ``z3c.pt.macro`` module into
-  ``z3c.pt.template``. [malthe]
-
-- Namespace attribute "xmlns" no longer rendered for templates with no
-  explicit document type. [malthe]
-  
-- Changes to template method signatures. [malthe]
-  
-- Engine now expects all strings to be unicode or contain ASCII
-  characters only, unless an encoding is provided. [malthe]
-  
-- The default path traverser no longer proxies objects. [malthe]
-  
-- Template output is now always converted to unicode. [malthe]
-  
-- The ``ViewPageTemplateFile`` class now uses 'path' as the default
-  expression type. [malthe]
-  
-- The compiler now expects an instantiated parser instance. [malthe]
-
-  Features
-
-- Added expression translator "provider:" (which renders a content
-  provider as defined in the ``zope.contentprovider``
-  package). [malthe]
-  
-- Added template API to render macros. [malthe]
-  
-- Optimized template loader so only a single template is instantiated
-  per file. [malthe]
-  
-- Made ``z3c.pt`` a namespace package. [malthe]
-  
-- Added reduce and restore operation to the compilation and rendering
-  flow in the test examples to verify integrity. [malthe]
-
-- The ZPT parser now supports prefixed native attributes,
-  e.g. <tal:foo tal:bar="" />. [malthe]
-  
-- Source-code is now written to disk in debug mode. [malthe]
-  
-- Custom validation error is now raised if inserted string does not
-  validate (when debug mode is enabled). [malthe]
-
-- Added support for omitting rendering of HTML "toggle" attributes
-  (option's ``selected`` and input's ``checked``) within dynamic
-  attribute assignment.  If the value of the expression in the
-  assignment evaluates equal to boolean False, the attribute will not
-  be rendered.  If the value of the expression in the assignment
-  evaluates equal to boolean True, the attribute will be rendered and
-  the value of the attribute will be the value returned by the
-  expression. [chrism]
-
-- XML namespace attribute is now always printed for root tag. [malthe]
-  
-- Allow standard HTML entities. [malthe]
-  
-- Added compiler option to specify an implicit doctype; this is
-  currently used by the template classes to let the loose XHTML
-  doctype be the default. [malthe]
-  
-- Added support for translation of tag body. [malthe]
-
-- Added security configuration for the TALES iterator (repeat
-  dictionary). This is made conditional on the availability of the
-  application security framework. [malthe]
-
-- Dynamic attributes are now ordered as they appear in the
-  template. [malthe]
-  
-- Added ``symbol_mapping`` attribute to code streams such that
-  function dependencies can be registered at compile-time. [malthe]
-
-- Allow BaseTemplate-derived classes (PageTemplate, PageTemplateFile, 
-  et. al) to accept a ``doctype`` argument, which will override the
-  doctype supplied by the source of the template if specified. [chrism]
-
-- Language negotiation is left to the page template superclass, so we
-  don't need to pass in a translation context anymore. [malthe]
-
-- The ``ViewPageTemplateFile`` class now uses the module path of the
-  calling class to get an absolute path to a relative filename passed
-  to the constructor. [malthe]
-
-- Added limited support for the XInclude ``include`` directive. The
-  implemented subset corresponds to the Genshi implementation, except
-  Match-templates, which are not made available to the calling
-  template. [malthe]
-
-- Use a global template registry for templates on the
-  file-system. This makes it inexpensive to have multiple template
-  class instances pointing to the same file. [malthe]
-
-- Reimplemented the disk cache to correctly restore all template
-  data. This implementation keeps a cache in a pickled format in a
-  file next to the original template. [malthe]
-
-- Refactored compilation classes to better separate concerns. [malthe]
-
-- Genshi macros (py:def) are now available globally. [malthe]
-
-- A syntax error is now raised when an interpolation expression is not
-  exhausted, e.g. only a part of the string is a valid
-  Python-expression. [malthe]
-
-- System variables are now defined in a configuration class. [malthe]
-
-- Improve performance of codegen by not repeatedly calling
-  an expensive "flatten" function. [chrism]
-
-- Remove ``safe_render`` implementation detail.  It hid information
-  in tracebacks. [chrism]
-
-- Implemented TAL global defines. [malthe]
-
-- Added support for variables with global scope. [malthe]
-
-- Curly braces may now be omitted in an expression interpolation if
-  the expression is just a variable name; this complies with the
-  Genshi syntax. [malthe]
-
-- UTF-8 encode Unicode attribute literals. [chrism]
-
-- Substantially reduced compiler overhead for lxml CDATA
-  workaround. [malthe]
-
-- Split out element compiler classes for Genshi and Zope language
-  dialects. [malthe]
-
-- Make lxml a setuptools "extra".  To install with lxml support
-  (currently required by Genshi), specify "z3c.pt [lxml]" in
-  any references you need to make to the package in buildout or
-  in setup.py install_requires.  [chrism]
-
-- Add test-nolxml and py-nolxml parts to buildout so the package's
-  tests can be run without lxml.  [chrism]  
-
-- No longer require default namespace. [malthe]
-
-- Changed source code debug mode files to be named <filename>.py instead of
-  <filename>.source.
-
-- Generalized ElementTree-import to allow both Python 2.5's
-  ``xml.etree`` module and the standalone ``ElementTree``
-  package. [malthe]
-
-- Expression results are now validated for XML correctness when the
-  compiler is running in debug-mode. [malthe]
-
-- Preliminary support for using ``xml.etree`` as fallback for
-  ``lxml.etree``. [malthe]
-
-- String-expressions may now contain semi-colons using a double
-  semi-colon literal (;;). [malthe]
-
-- Preserve CDATA sections. [malthe]
-
-- Get rid of package-relative magic in constructor of BaseTemplateFile
-  in favor of just requiring an absolute path or a path relative
-  to getcwd(). Rationale: it didn't work when called from __main__
-  when the template was relative to getcwd(), which is the 99% case
-  for people first trying it out. [chrism]
-
-- Added support for METAL.
-  [malthe]
-
-- Add a TemplateLoader class to have a convenient method to instantiate
-  templates. This is similar to the template loaders from other template
-  toolkits and makes integration with Pylons a lot simpler.
-  [wichert]
-
-- Switch from hardcoding all options in config.py to using parameters
-  for the template. This also allows us to use the more logical
-  auto_reload flag instead of reusing PROD_MODE, which is also used
-  for other purposes.
-  [wichert]
-
-- Treat comments, processing instructions, and named entities in the
-  source template as "literals", which will be rendered into the
-  output unchanged. [chrism]
-
-  Bugfixes
-
-- Skip elements in a "define-slot" clause if its being filled by the
-  calling template. [malthe]
-  
-- Support "fill-slot" on elements with METAL namespace. [malthe]
-  
-- Omit element text when rendering macro. [malthe]
-  
-- ``Macros`` class should not return callable functions, but rather a
-  ``Macro`` object, which has a ``render``-method. This makes it
-  possible to use a path-expression to get to a macro without calling
-  it. [malthe]
-  
-- Fixed bug where a repeat-clause would reset the repeat variable
-  before evaluating the expression. [malthe]
-  
-- Fixed an issue related to correct restoring of ghosted template
-  objects. [malthe]
-
-- Implicit doctype is correctly reestablished from cache. [malthe]
-
-- Remove namespace declaration on root tag to work around syntax error
-  raised when parsing an XML tree loaded from the file cache. [malthe]
-
-- Attribute assignments with an expression value that started with the
-  characters ``in`` (e.g. ``info.somename``) would be rendered to the
-  generated Python without the ``in`` prefix (as
-  e.g. ``fo.somename``). [chrism]
-
-- When filling METAL slots (possibly with a specific version of
-  libxml2, I am using 2.6.32) it was possible to cause the translator
-  to attempt to add a stringtype to a NoneType (on a line that reads
-  ``variable = self.symbols.slot+element.node.fill_slot`` because an
-  XPath expression looking for fill-slot nodes did not work
-  properly). [chrism]
-
-- Preserve whitespace in string translation expressions. [malthe]
-  
-- Fixed interpolation bug where multiple attributes with interpolation
-  expressions would result in corrupted output. [malthe]
-
-- Support try-except operator ('|') when 'python' is the default
-  expression type. [malthe]
-  
-- METAL macros should render in the template where they're
-  defined. [malthe]
-  
-- Avoid printing a line-break when we repeat over a single item
-  only. [malthe]
-  
-- Corrected Genshi namespace (needs a trailing slash). [malthe]
-
-- Fixed a few more UnicodeDecodeErrors (test contributed by Wiggy).
-  In particular, never upcast to unicode during transformation, and
-  utf-8 encode Unicode attribute keys and values in Assign expressions
-  (e.g. py:attrs). [chrism]
-
-- Fixed off-by-one bug in interpolation routine. [malthe]
-
-- The repeat-clause should not output tail with every iteration. [malthe]
-
-- CDATA sections are now correctly handled when using the
-  ElementTree-parser. [malthe]
-
-- Fixed bug in path-expressions where string instances would be
-  (attempted) called. [malthe]
-
-- CDATA sections are now correctly preserved when using expression
-  interpolation. [malthe]
-
-- The Genshi interpolation operator ${} should not have its result
-  escaped when used in the text or tail regions. [malthe]
-
-- Fixed edge case bug where inserting both a numeric entity and a
-  literal set of unicode bytes into the same document would cause a
-  UnicodeDecodeError. See also
-  http://groups.google.com/group/z3c_pt/browse_thread/thread/aea963d25a1778d0?hl=en
-  [chrism]
-
-- Static attributes are now properly overriden by py:attr-attributes.
-  [malthe]
-  
-Version 0.9 - August 7, 2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Added support for Genshi-templates.
-  [malthe]
-
-- Cleanup and refactoring of translation module.
-  [malthe]
-  
-- If the template source contains a DOCTYPE declaration, output it
-  during rendering. [chrism]
-
-- Fixed an error where numeric entities specified in text or tail
-  portions of elements would cause a UnicodeDecodeError to be raised
-  on systems configured with an 'ascii' default encoding. [chrism]
-
-- Refactored file system based cache a bit and added a simple benchmark for
-  the cache. The initial load speed for a template goes down significantly
-  with the cache. Compared to zope.pagetemplate we are only 3x slower,
-  compared to 50x slower when cooking each template on process startup.
-
-- Got rid entirely of the _escape function and inlined the actual code
-  instead. We go up again to 12x for path and 19x for Python expressions :)
-  [hannosch]
-
-- Avoid string concatenation and use multiple write statements instead. These
-  are faster now, since we use a list append internally.
-  [hannosch]
-
-- Inline the _escape function, because function calls are expensive in Python.
-  Added missing escaping for Unicode values.
-  [fschulze, hannosch]
-
-- When templates are instantiated outside of a class-definition, a
-  relative file path will be made absolute using the module path.
-  [malthe]
-
-- Simplified the _escape function handling by pulling in the str call into the
-  function. Corrected the bigtable hotshot test to only benchmark rendering.
-
-- Replaced the cgi.escape function by an optimized local version, we go up
-  to 11x for path and 16x for Python expressions :) In the bigtable benchmark
-  the enhancement is more noticable - we are the same speed as spitfire -O1
-  templates now and just half the speed of -O3 :))
-
-- Added a new benchmark test called bigtable that produces results which are
-  directly comparable to those produced by the bigtable.py benchmark in the
-  spitfire project.
-
-- Introduce a new config option called `Z3C_PT_DISABLE_I18N`. If this
-  environment variable is set to `true`, the template engine will not call
-  into the zope.i18n machinery anymore, but fall back to simple interpolation
-  in all cases. In a normal Zope environment that has the whole i18n
-  infrastructure set up, this will render the templates about 15x faster than
-  normal TAL, instead of only 10x faster at this point.
-
-- Removed the `second rendering` tests from the benchmark suite. Since we
-  enable the file cache for the benchmarks, there's no difference between the
-  first and second rendering anymore after the cache file has been written.
-
-- Require zope.i18n 3.5 and add support for using its new negotiate function.
-  If you use the `zope_i18n_allowed_languages` environment variable the target
-  language for a template is only negotiated once per template, instead of
-  once for each translate function call. This more than doubles the speed
-  and the benchmark is back at 9.2 times faster.
-
-- Extended the i18n handling to respect the passed in translation context to
-  the template. Usually this is the request, which is passed on under the
-  internal name of `_context` into the render functions. After extending the
-  i18n tests to include a negotiator and message catalog the improvement is
-  only at 4.5 anymore, as most of the time is spent inside the i18n machinery.
-
-- Added persistent file cache functionality. If the environment variable is
-  set, each file system based template will add a directory to the cache
-  (currently a SHA-1 of the file's absolute path is used as the folder name)
-  and in the folder one file per params for the template (cache filename is
-  the hash of the params). Once a template file is initialized, an instance
-  local registry is added, which then looks up all cached files and
-  pre-populates the registry with the render functions.
-
-- Fixed interpolation edge case bugs.
-  [malthe]
-
-- Added new `Z3C_PT_FILECACHE` environment variable pointing to a directory.
-  If set, this will be used to cache the compiled files.
-
-- Added a second variation of the repeat clause, using a simple for loop. It
-  doesn't support the repeatdict, though and is therefor not used yet. Also
-  began work to add introspection facilities to clauses about the variables
-  being used in them. The simpler loop causes the benchmarks to go up to a
-  10.5 (old 9.5) for path expressions and 14.5 (12.5) for python expressions.
-  So the next step is to introduce an optimization phase, that can decide
-  which variant of the loops to use.
-
-- Made the debug mode independent from the Python debug mode. You can now
-  specify an environment variable called `Z3C_PT_DEBUG` to enable it.
-
-- Added some code in a filecache module that can later be used to write out
-  and reload the compiled Python code to and from the file system. We should
-  be able to avoid reparsing on Python process restart.
-
-- Simplified the generated _escape code. cgi.escape's second argument is a
-  simple boolean and not a list of characters to quote.
-
-- Use a simple list based BufferIO class instead of a cStringIO for the out
-  stream. Avoiding the need to encode Unicode data is a bigger win. We do
-  not support arbitrarily mixing of Unicode and non-ascii inside the engine.
-
-- Merged two adjacent writes into one inside the Tag clause.
-
-- Applied a bunch of micro-optimizations. ''.join({}) is slightly faster
-  than ''.join({}.keys()) and does the same. Avoid a try/except for error
-  handling in non-debug mode. Test against 'is None' instead of a boolean
-  check for the result of the template registry lookup. Made PROD_MODE
-  available defined as 'not DEBUG_MODE' in config.py, so we avoid the 'not'
-  in every cook-check.
-
-- Added more benchmark tests for the file variants.
-
-- Optimized 'is None' handling in Tag clause similar to the Write clause.
-
-- Made the _out.write method directly available as _write in all scopes, so
-  we avoid the method lookup call each time.
-
-- Optimized 'is None' handling in Write clause.
-
-- Slightly refactored benchmark tests and added tests for the file variants.
-
-- In debug mode the actual source code for file templates is written out to
-  a <filename>.source file, to make it easier to inspect it.
-
-- Make debug mode setting explicit in a config.py. Currently it is bound to
-  Python's __debug__, which is False when run with -O and otherwise True.
-
-- Use a simplified UnicodeWrite clause for the result of _translate calls,
-  as the result value is guaranteed to be Unicode.
-
-- Added benchmark tests for i18n handling.
-
-- Added more tests for i18n attributes handling.
-
-- Don't generate empty mappings for expressions with a trailing semicolon.
-
-- Fixed undefined name 'static' error in i18n attributes handling and added
-  quoting to i18n attributes.
-
-- Added condition to the valid attributes on tags in the tal namespace.
-
-- Made sure the traceback from the *first* template exception
-  is carried over to __traceback_info__
-
-- Added template source annotations on exceptions raised while
-  rendering a template.
-
-Version 0.8 - March 19, 2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Added support for 'nocall' and 'not' (for path-expressions).
-
-- Added support for path- and string-expressions.
-
-- Abstracted expression translation engine. Expression implementations
-  are now pluggable. Expression name pragmas are supported throughout.
-
-- Formalized expression types
-
-- Added support for 'structure'-keyword for replace and content.
-
-- Result of 'replace' and 'content' is now escaped by default.
-
-- Benchmark is now built as a custom testrunner
-
-Version 0.7 - March 10, 2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Added support for comments; expressions are allowed
-  inside comments, i.e.
-
-     <!-- ${'Hello World!'} -->
-
-  Comments are always included.
-  
-Version 0.6 - February 24, 2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Added support for text templates; these allow expression
-  interpolation in non-XML documents like CSS stylesheets and
-  javascript files.
-
-Version 0.5 - February 23, 2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Expression interpolation implemented.
-
-Version 0.4 - February 22, 2008
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Engine now uses cStringIO yielding a 2.5x performance
-  improvement. Unicode is now handled correctly.
-
-Version 0.3 - December 23, 2007
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Code optimization; bug fixing spree  
-
-- Added ``ViewPageTemplateFile`` class
-  
-- Added support for i18n
-  
-- Engine rewrite; improved code generation abstractions 
-  
-Version 0.2 - December 5, 2007
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Major optimizations to the generated code  
-
-Version 0.1 - December 3, 2007
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- First public release
-



More information about the Checkins mailing list