The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
2.97 Thu May 18 2017
    - Change internal module name HTML::Template::DEFAULT to
      HTML::Template::DEF to avoid conflict with
      HTML::Template::Default. [Sam Tregar]

2.96 Thu May 18 2017
    - Fixed typos in documentation [David Steinbrunner, Steve Kemp]
    - Added CGI.pm as a dependency, needed now that it's no longer in core.
      [Martin McGrath, Steve Bertrand]

2.95 Mon Oct 21 2013
    - Added support for "none" for default_escape [Mark Stosberg]
    - Escape unicode new-line characters in JS escape [Michael Peters]

2.94 Thu Jan 17 2013
    - Fixed bug where options were bleeding over into subsequent calls to new()
      [Michael Peters]

2.93 Wed Jan 16 2013
    - Feature: Added config() method to make setting global defaults
      easy so that each call to new() has less boiler plate. [Michael
      Peters]

    - Bug Fix: t/05-force_untaint.t now passes when run with prove
      [Michael Peters]

    - Bug Fix: die_on_bad_params now controls whether we die if tmpl_vars
      reuse names from tmpl_loops (which can be useful in some situations)
      [Michael Peters]

2.91 Fri Mar 30 2012

   - Feature: RT #18901 - Added new utf8 option to make it really simple
     to use UTF-8 encoded templates [Michael Peters]

   - Feature: RT #30586 - Added new open_mode option to allow for
     Perl IO layers to interact when using open() on the template files
     [moritz@faui2k3.org and Michael Peters]

   - Feature: RT #38189 - Allow clean XML style tags "<tmpl_var foo />"
     to be used as well. [allard@byte.nl]

   - Feature: RT #46285 - Added support for lazily-evaluated coderefs
     for TMPL_LOOPs. [Justin DeVuyst and Michael Peters]

   - Feature: RT #64797 - Added new option die_on_missing_include (defaults
     to true) that allows users to turn off the behavior of dieing when an 
     include can't be found [Zdenek Styblik and Michael Peters]

   - Feature: Add new cache_lazy_vars option so that the values from coderefs
     used for TMPL_VARs can be cached and the coderef not run multiple times 
     [Michael Peters]

   - Feature: Add new cache_lazy_loops option so that the values from coderefs
     used for TMPL_LOOPs can be cached and the coderef not run multiple times 
     [Michael Peters]

   - Feature: Added __even__, __outer__ and __index__ loop context vars. 
     [Michael Peters]

   - Bug Fix: RT #26456 - force_untaint can't work in Perl < 5.8.0
     [admin@photoresearchers.com]

   - Bug Fix: RT #67663 - remove warning under Perl > 5.14.0 about using tied
     with a file handle without "*" [RENEEB, TODDR and Michael Peters]

   - Bug Fix: RT #35534 - Using the same loop multiple times with
     different vars will no longer cause an error if die_on_bad_params 
     is set. [Ron Savage & Michael Peters]

   - Bug Fix: RT #38325 - Give a better error message if param() is set
     with a reference to a reference. [Mark Stosberg & Michael Peters]

   - Test Fix: RT #26103 - t/05-blind-cache.t no longer modifies the
     distribution during the tests but instead uses temp files [Jan
     Dubois and Michael Peters]

   - Test Fix: Tests that create and modify files now use temp files
     and file_cache_dir is always a temp directory [Michael Peters]

   - Doc Fix: Using more POD formatting [Michael Peters]

   - Doc Fix: RT #46244 - fix broken link to tutorial [Michael Peters]

   - Doc Fix: RT #60282 - fix various mispellings [Florian Ernst]

   - Doc Fix: RT #60283 - fix broken HTML example [Florian Ernst]

   - Doc Fix: RT #60284 - fix broken POD [Florian Ernst and Michael Peters]

   - Development: Moved development to GitHub
     (https://github.com/mpeters/html-template)

   - Development: Switched to using Dist::Zilla internally for release management

   - Development: Added Michael Peters as co-maintainer

2.9 Mon Jan 29 15:54:03 EST 2007
   - New Feature: the new force_untaint option makes sure you do not
     pass tainted values to param(). [Sven Neuhaus]

   - New Feature: Added ESCAPE=NONE as a synonym for ESCAPE=0.  Fixed 
     both to work with default_escape. [cpan@punch.net]

   - Bug Fix: DEFAULT didn't work with URL and JS escaping. 

   - Bug Fix: Long-standing bug where variables set in a loop weren't
     available inside inner loops under global_vars if the variable
     wasn't actually used in the outer loop.  (Thanks to Richard Fein
     for help debugging the fix.)

   - Doc Fix: Changed references to CVS in the docs to Subversion now that
     the switch is complete.

   - Test Fix: At long last, the work from the Phalanx project has
     been merged!  The tests are now more complete and easier to work
     on.  Thanks Phalanx guys!

2.8 Wed Dec 21 18:37:39 EST 2005
   - New Feature: the new default_escape option allows you to apply
     escaping to all variables in a template. [Alex Kapranoff]

   - Bug Fix: ESCAPE wasn't working on variables containing code-refs.

   - Bug Fix: Changed HTML::Template to help sub-classes by called
     _new_from_loop() via ref($self) rather than hard-coding the package
     name. [Mark Stosberg]

   - Bug Fix: Including more than one <tmpl_else> tag in <tmpl_unless> or
     <tmpl_unless> now dies with an error message, instead of silently ignoring
     one of the clauses. [Mitar and Mark Stosberg]

   - Bug Fix: Fixed HTML::Template to re-evaluate conditions to handle
     <tmpl_else>.  This bug could cause HTML::Template to take both
     branches of a conditional if a code-ref parameter returned a
     different value when called a second time. [Emanuele Zeppieri]


2.7 Thu Jun 24 12:00:00 2004
   - New Feature: Added javascript escaping with ESCAPE=JS. (Craig Manley)

   - Bug Fix: Improved cache keying to be sensitive to options which
              alter the compilation of templates (path, search_path,
              loop_context_vars and global_vars).  Calls to new() with
              different settings for any of these options will no longer pull
              incorrect cached objects.

   - Bug Fix: Added code to detect broken Perl 5.8.0 installs
              during installation (i.e. Redhat 8 and 9).

   - Bug Fix: Fixed parsing of ESCAPE='URL' (Paul Baker)

   - Bug Fix: Added check for empty filename passed to new().

   - Test Fix: Migrated tests to Test::More.  This will allow the
               easier introduction of new tests and the use of
               Devel::Cover. (Gabor Szabo)

2.6 Thu Aug 29 12:00:00 2002
   - New Feature: HTML::Template will combine HTML_TEMPLATE_ROOT
                  environment variable and path option if both are
                  available. (Jesse Erlbaum)
   - New Feature: __counter__ variable now available when
                  loop_context_vars is set (Simran Gambhir)
   - New Feature: The default attribute allows you to specify
                  defaults for <tmpl_var> tags.
   - Bug Fix: fixed parser to reject <tmpl_var>s with no names.
              (crazyinsomniac)
   - Doc Fix: fixed documentation to correctly describe the
              interaction of case_sensitive and loop_context_vars.
              (Peter Claus Lamprecht)
   - Doc Fix: updated mailing-list information to reflect move from
              vm.com to sourceforge.net

2.5 Fri Feb 01 12:00:00 2002
   - Bug Fix: global_vars fixed for loops within loops
   - Bug Fix: include paths were broken under Windows (David Ferrance)
   - Bug Fix: nested include path handling was wrong (Gyepi Sam)
   - Bug Fix: MD5 signatures for file cache corrected (Martin Schroth)
   - Bug Fix: print_to was broken for tied filehandles (Darren Chamberlain)
   - Doc Fix: added mailing-list archive URL to FAQ, added link to
              tutorial, fixed typos and formatting
   - Doc Fix: added reference to new HTML::Template website at
              http://html-template.sourceforge.net/

2.4 Mon August 27 12:00:00 2001
   - Bug Fix: case_sensitive option broke loops (Peter Leonard)
   - Bug Fix: code-ref params now work with IF and UNLESS

2.3 Thu June 28 12:00:00 2001
   - New Feature: template tags can now span lines.  (Roland Giersig)
   - New Feature: new() option 'filehandle'. (Roland Giersig)
   - Bug Fix: includes were broken in some cases using scalarref
     templates. (Lance Thomas)
   - Bug Fix: recursive include detection was broken for scalarref
     templates. (Mark Stosberg)
   - Bug Fix: cleaned up more 5.004 warnings. (Jere Julian)

   
2.2 Sat December 23 12:00:00 2000
   - Bug Fix: fixed memory leak in global_vars implementation 
     (Ade Olonoh)
   - Bug Fix: fixed file_cache not reloading templates on changes
     (T.J. Mather)
   - Bug Fix: fixed broken error checking in param() (Mark Stosberg)

2.1 Sun December 18 12:00:00 2000
   - New Feature: new 'file_cache' and 'double_file_cache' options
     provide a file based caching method (T.J. Mather)
   - New Feature: new 'print_to' option for output() allows
     output() to print to a filehandle as it runs. 
     (Chris Nokleberg)
   - New Feature: new 'case_sensitive' option to allow template
     variable names to be case sensitive. (Matthew Wickline)       
   - New Feature: new 'filter' option allows pre-parse filtering of
     template files.
   - Bug Fix: added single-quote escaping to HTML escaping code 
     (Ralph Corderoy)
   - Bug Fix: fixed a noisy bug in param() when used with 'associate'
     (William Ward)
   - Doc Fix: broke out FAQ into separate file.

2.0 Sun September 16 12:00:00 2000 
   - New Feature: new 'search_path_on_include' option (Jody Biggs)
   - New Feature: much requested variable __ODD__ added to set of
     loop_context_vars.
   - New Feature: new 'no_includes' option (Scott Guelich)
   - Doc Addition: Added link to Japanese translation (Kawai Takanori)
   - Bug Fix: loop_context_vars was mostly broken (T.J. Mather, 
     Martin Schroth and Dave Wolfe)
   - Bug Fix: vanguard_compatibility_mode was broken on first line of
     included files. (uchum)

1.8 Sun June 25 12:00:00 2000
   - New Feature: global_vars option makes outer variables visible
     inside loops.
   - Bug Fix: Use File::Spec to construct pathnames.  This means 
     that HTML::Template should now work on VMS and MacOS.
     (Larry Moore)
   - Bug Fix: loop_context_vars were broken in an unusual case
     (Todd Larason)
   - Bug Fix: ESCAPE was broken in some cases.
   - New License: switched to GPL/Artistic hybrid normally used
     with Perl modules.

1.7 Fri March 24 12:00:00 2000
   - New Feature: new method query() enables introspection into 
     loops (Chris Houser)
   - New Feature: Better error handling with Carp      
   - Bug Fix: URLESCAPE was skipping some important escapes (Simran Gambhir)
   - New FAQ: How can I execute a program from inside my template?

1.6 Sun March 05 12:00:00 2000
   - New Feature: double_cache combines shared memory and local memory
     caching for twice the speedup!
   - New feature: ESCAPE=URL (added by Tobias Brox)
   - Bug Fix: allow for blessed objects in calls to param()
     (thanks to Michael Lloyd and David Glasser)
   - Bug Fix: _mtime was broken in 1.5, fixed a typo.

1.5.1 Wed February 23 12:00:00 2000
   - Bug Fix: 1.5 broke caching in some cases - thanks to Drew Taylor 
     for help solving this one.

1.5 Mon February 17 12:00:00 2000
    - Shared cache now uses IPC::SharedCache and is much more stable.
    - Fixed problem with mixed case associated CGI.pm parameters
    - param() now accepts subroutine refs for TMPL_VARs.       

1.4 Sat January 8 12:00:00 2000
    - New feature: new() option 'shared_cache' enables experimental
      IPC shared memory caching!
    - TMPL_IF now works on TMPL_LOOP variables.
    - Public CVS server available at www.sourceforge.net.
    - Bug Fix from Doug Steinwand: loop_context_vars not working
      on one-item loops.

1.3 Fri December 17 12:00:00 1999 
     - Omnibus regex patch from Matthew Wickline: a faster and more
       robust parse().
     - New tag: TMPL_UNLESS, the opposite of TMPL_IF.
     - Numerous bug fixes: mixed-case filenames in includes,
       recursive TMPL_INCLUDEs, reporting filename and line number
       inside included files, better syntax-error detection.
     - Optional loop context variables - __FIRST__, __LAST__ and
       __INNER__.

1.2.1 Wed November 17 12:00:01 1999
     - tiny bug fix

1.2 Wed November 17 12:00:00 1999
     - Added multi-parameter and hash-ref syntax for param() calls.
     - Added DTD-compliant <!-- TMPL_* --> syntax patch from
       Matthew Wickline - Thanks!
     - vanguard_compatibility_mode = 1 implies die_on_bad_params = 0

1.1 Fri November 05 12:00:00 1999
     - Lifted requirement that <TMPL_INCLUDE>s be alone on a line
     - Added "path" option to new() to manipulate search path for 
       templates.
     - bug fixes        

1.0 Fri October 28 12:00:00 1999
     - An HTML::Template mailing-list!  Send a blank message to
       htmltmpl-subscribe@lists.vm.com to join.
     - bug fixes
     - improved docs

0.96  October 14th 1999 15:49
     - Added "ESCAPE=1" option to <TMPL_VAR> to HTML-escape
       variable values.  (Peter Marelas, thanks!)
     - more bug fixes (David Glasses, James William Carlson - 
       thanks)
     - even *more* code cleanup!
     - new FAQ concerning pre-loading templates and mod_perl.

0.95  October 8th 1999 12:28 
     - bug fix: some lines were getting chomped (Eric Zylberstejn)
     - *NUMEROUS* bug fixes (David Glasser - Thanks a lot!)
     - new FAQ section in documentation
     - code cleanup and improved comments

0.91  September 29th 1999 17:59 
     - bug fix: possible loss of text after a </TMPL_IF>
       (Thanks to Tom Huskins for alerting me to this one!)

0.9  September 28th 1999 17:46
     - <TMPL_IF> and <TMPL_ELSE>
     - near total rewrite - faster, smaller, more "compiler-esque" code.
     - *MASSIVE* speedups in all modes - up to 10x faster!1
     - bug fix : param() wasn't returning names of LOOPs
     - This really is version 0.9 so 1.0 is coming up.  Get those
       bug reports in!

0.06  September 19th 1999 23:09 
     - added associate parameter to new() and obsoleted
       associate_CGI() (still supported for now)
     - added support for HTML_TEMPLATE_ROOT environment variable
     - small performance improvements using typeglobs
     - added a performance testing script: time_trial.pl
     
0.051  September 10th 1999 17:30
     - small problem with make test fixed.

0.05  September 10th 1999 17:18
     - Added <TMPL_INCLUDE> functionality!
     - Added associate_CGI() method - donated by Richard Dice
     - Cleaned up internal access to new() options.
     - more bug fixes from such notables as Kevin Puetz, and Steve
       Reppucci.       

0.04  Fri June 18 12:00:00 1999
     - fixed cacheing - under certain conditions it was totally broken!
     - changed {param} to {param_values} - some older perls complained.
     - die_on_bad_params => 0 now also applied to loop body.
     - added copious comments about how bad m//i is to avoid future
       bug reports about [tT][hH][iI][sS]!
     - added numerous bug fixes and optimizations submitted by Mike
       Blazer, Adriano Nagelschmidt Rodrigues, Andrej Mikus and
       Ilya Obshadko.  Thanks!
     
0.03  Fri June 11 17:37:00 1999
     - fixed a few irritating "undefined variable" errors in -w
     - big speedup on large TMPL_LOOPs.  They are at least one order of
       magnitude faster now!
     - die_on_bad_params => 0 never really worked!  It does now.

0.02  Mon May 31 12:47:00 1999
     - die on multiple source parameters in new()
     - tries to preserve newlines in loop body
     - copies in array contents from array refs on param call
       i.e. allows for reuse of scratch arrays on calling side
     - Added a CREDITS section to the docs, inaugurated it with
       Richard Chen for his many fixes.
     - Added type => 'sometype', source => 'source' new() syntax.
     - made "NAME=" in tags optional.  Added a test.pl to check for
       this.

0.01  Mon May 17 15:17:00 1999
     - added cacheing to module and perldoc
     - moved .tmpl files used by 'make test' to /templates
     - first release!

0.00  Fri May 14 14:59:06 1999
     - original version; created by h2xs 1.18