The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension DTL::Fast.

2017.1 - Tue 9 Mar 2017
    - Changed versioning to the year-based
    - Fixed bug with SSI security warning
    - Added die_on_missing_path option to the DTL::Fast::Context

1.623 - Tue 23 Feb 2017
    - Removed test with incorrect utf symbols, because they are not accepted by perl 5.26

1.621 - Wed 09 Dec 2015
    - Minor docs fixes
    - Memory leaks fixes in _template key

1.620 - Mon 13 Apr 2015
    - Improvement
        - Implemented `slice` filter working with scalars as substring, fixes #81
        - Prettified expressions rendering error messages
        - Prettified rendering error messages for `numberformat` and `stringformat` filters
    - Bugfix
        - Empty brackets now rendered as is, without throwing an exception, fixes #80
        - Added `with` tag parameters validation, fixes #82
        - Fixed bug with `-var` rendering, fixes #91

1.619 - Mon 06 Apr 2015
    - Bugfix
        - Fixed bug with non-reference on context traversing, fixes #76
    - Improvement
        - Implemented pretty debug message for context traversing errors

1.618 - Sun 05 Apr 2015
    - Improvement
        - Changed context variable traversing: context is not being passed to the code references or object methods anymore, fixes #69, thanks @cblake777
        - `ssi` tag is now depricated, warning added
        - `now` tag is now supports `.. as var_name` syntax from Django 1.8. Fixes #73
        - parsing error messages in `autoescape`, `block` and `now` tags are now pretty
        - expression parsing messages are now pretty
    - Documentation
        - Documented supported operators and some syntax features
        - Documentation links to Django site now leads to the 1.8 version
    - Bugfix
        - forloop.last has a proper value on 1 item array, fixes #72

1.617 - Sun 29 Mar 2015
    - Implemented DTL::Fast::count_lines function in C, counts newline symbols in the string
    - Implemented proper lines counting for multi-line syntax constructions, fixes #64
    - for tag now dies with pretty message on duplicate empty tag
    - Uknown filter and tag now shows error environment, fixes #63
    - Undefined time value in date filter treated as 0, fixes #61
    - Implemented dump, dump_html and dump_warn tags for dumping context variables in different ways, fixes #68
    - warn tag removed in favor of dump_warn
    - Added variable name validation and restrictions, fixes #62

1.616 - Sun 22 Mar 2015
    - Updated Escape::XS version requirement to 0.12

1.615 - Sat 21 Mar 2015
    - Improved error message on undisclosed/unknown tags, with source line numbers support
    - Reverted Escape::XS mapping, not working on windows (no idea why)

1.613 - Sat 21 Feb 2015 14:15 MSK
    - implemented html_protect in C, test performance increased 17%, fixes #32
    - internal context access optimisation, total performance increase 30%
    - variable context access optimisation for simple variables, total increase 36%
    - shortcuted escape/unescape functions to URI::Escape::XS
    - DTL::Fast::Utils::as_bool method now works without additional functions calls
    - Implemented and documented eval_sequence method
    - Documented custom tags creation, fixes #12
    - Documented custom filters creation, fixes #13

1.612 - Sun 15 Feb 2015 18:40 MSK
    - Fixed timeuntil test race condition, thanks to @eserte, fixes #59
    - Implemented dynamic inheritance. You may now extend with context, fixes #9
    - Redundant serialized cache removed from templating system. Only runtime and custom now.
    - Added block_super tag and {{ block.super }} support, fixes #52

1.611 - Sun 15 Feb 2015 11:44 MSK
    - stringformat now treats undef values as empty strings
    - fixed bug with crashing on error messging with "undef in sprintf" error, fixes #57
    - logical operators now behaves properly. Second operand evaluated only if first is not enough, fixes #25
    - upper and lower filters treats undef as an empty string
    - implemented split filter (experimental)
    - implemented sprintf tag (experimental)

1.609 - Wed 11 Feb 2015 21:38 MSK
    - Dynamic filters loading implemented, fixes #16
    - Dynamic operators loading implemented, fixes #19
    - Custom operators introduced
    - Documented some additional filters 
    - Fixed bug with locale-specific string operations: cmp, lt, gt, upper, lower, capfirst, dictsort

1.608 - Tue 10 Feb 2015 19:09 MSK
    - Removed unsafe map usage in complicated loops
    - Fixed bug with spaceless closing tags `endcomment` and `endverbatim`

1.606 - Mon 09 Feb 2015 16:23 MSK
    - SSI tag behavior now is like in Django, fixes #26
    - ifchanged tag is now rendered on the first pass
    - ifchanged tag can now work without parameters (watching rendered content); not recommended, bad performance
    - new tag - warn
    - fixed bug with slicing indexes outside the array boundaries
    - implemented dynamic tags loading and preloading registering with register_tag, fixes #18
    - replaced some redundant methods with direct perl API calls
    - documented numberformat filter, fixes #10

1.605 - Wed 28 Jan 2015 18:27 MSK
    - Fixed spaces between equals in 'with' tag. Now tags may be multiline, fixes #7
    - Fixed filters behavior in with tag, if constant strings being used in assignment, fixes #8
    - Blocks now can be multi-line

1.604 - Tue 27 Jan 2015 20:18 MSK
    - Fixed bug when expression fails if variable name contains operator
    - Load tag is now accepts package names with or without quotes

1.602 - Sun 25 Jan 2015 20:18 MSK
    - Implemented and tested include .. with tag

1.05.6 - 2015-01-22
    - Removed changes from pod documentation
    - Fixed lvalue test for perl 5.10

1.05.5 - 2015-01-21
    - Changes file cleanup
    - Added filter numberformat, formats number like 12 345 678.9999999
    - Added DTL::Fast::Utils::is_lvalue method to check if method is lvalue. 
      Lvalue methods in context being invoked without context argument.
    - Fixed bugs with spaces in variables and filters

1.05.4 - 2015-01-20
    - Unknown block warning now displays template filename
    - Spaces in control blocks are not mandatory

1.05.3 - 2015-01-20
    - Context trying to traverse objects like hash if there is no method

1.05.2 - 2015-01-19
    - Fixed bug in C spaceless implementation for linux
    - Moved inheritance part into Template constructor
    - Fixed bug with inheritance + blocks extension
    - Fixed bug with logic on arrays/hashes/scalars reference, object method 
      as_bool support added. Tested.
    - Fixed bug with setting value to undef using DTL::Fast::Context::set
    - Fixed bug with inheritance path.
    - Implemented cache validation. Speed now is comparable to Dotiac::DTL
    - Made dirs parameter optional for Template constructor, but it's still 
      mandatory for get_template/select_template
    - Implemented cache classes: 
    
        DTL::Fast::Cache
        DTL::Fast::Cache::Runtime
        DTL::Fast::Cache::Serialized
        DTL::Fast::Cache::Compressed
        DTL::Fast::Cache::File
        DTL::Fast::Cache::Memcached

    - New dependencies added: Compress::Zlib, Digest::MD5
    - Added Perl::Critic testing, complies level 4.
    - Implemented C realization of spaceless tag.

1.04 - 2015-01-14
    - Taken date function from Dotiac::DTL to DTL::Fast::Utils::time2str_php
    - `now` tag and `date` filter now works with time2str_php function (like Django itself)
    - Implemented strftime filter, which works with Date::Format str2time.
    - Added Russian version of pluralize filter:

        use DTL::Fast;
        use DTL::Fast::Filter::Ru::Pluralize; # this will override default pluralize with Russian version.
        
    - Refactored strings backup and parametrized filters.
    - `block` and `extends` tags now works as tags.
    - New dependency added: Storable

1.03 - 2015-01-13
    - Tested with CentOS & Perl 5.10
    - Lowered Perl version requirement to 5.10
    - Changed implicit split to explicit in wordcount filter (v5.10 considers it depricated).
    - Added exception on missing parent template in extends tag.
    - Added exception on missing included template in include tag.
    - Added exception on recursive inheritance (extends tag).
    - Added exception on recursive inclusion (include tag).

1.02 - 2015-01-10
    - changed some intermediate getters to direct access. Improved rendering performance by 10%.
    - added tests for performance measuring and profiling (see timethese directory).

1.01 - 2015-01-09
    - fixed bug with add filter repeated usage.

1.00 - 2015-01-09
    - First release

0.01  Sun Dec 28 18:36:48 2014
    - original version; created by h2xs 1.23 with options
        -AX DTL::Fast