Text::MicroMason::Docs::Changes - Change History for the MicroMason Distribution


Version 2.23


Allow templates to throw objects without stringifying them. Thanks to Daniel J. Wright for this patch.

Version 2.22


Add a newline in %args parsed output, to allow for comments in the %args block. Thanks to Daniel J. Wright for this patch.

Version 2.21


Remove Text::MicroMason::ParseInfo. The module never left "rough draft" status, wasn't tested or documented, and had fatal bugs.

If you used it, please provide complete info on exactly how and what for, and I can restore it.

Version 2.20


Fix #118166 reported by GREGOA via Debian package testing.

Attempt another workaround for t/34-compile_cache.t in MS32. `perldoc perlport` leads me to believe this is an MS32-specific issue.

Version 2.19


Merge patches for pod errors and typos from Debian Perl Group.

Work around issue in t/34-compile_cache.t where sleep() wasn't effective on some CPANTS test servers.

Version 2.18


Update version in Text::MicroMason::PLP to ensure PAUSE indexes it properly.

Fix bug in default_policy pod.

Version 2.17


Expand documentation for Text::MicroMason::Filters.

Add default_policy = 'override'> attribute for filter default behavior

Version 2.16


Remove garbage files from dist.

Version 2.15


[ #105499] Fix regression due to new error/warning format in Perl 5.22.

[ #92771] Fix line number regressionf due to a Perl line numbering bugfix. This passes tests but I'm not entirely convinced it's correct.

Version 2.14


[ #85965] Fix POD errors in Changes.pod.

Version 2.13


[ #64192] Skip the Safe-related tests more often, since newer versions of mark their own failing tests as TODO instead of changing the module's behavior.

Version 2.12


Skip more tests that fail due to a bug in Add a prereq for so CPAN testers will provide more debug info on failure.

Version 2.11


[ #61010] Fix spelling errors and pod example bugs. Thanks to vshih at for reporting these problems.


Under Perl 5.13.1 and later with Safe version 2.27, skip failing tests in t/32-safe.t. The regression tests for Safe 2.27 fail in Perl 5.13.1 as well, in a similar way. This bug is not fixable in any reasonable way until is also stable.


[ #59081] Fix spelling and pod errors. Thanks to Ansgar Burchardt and the Debian project for submitting this bug report along with patches.

Version 2.10


[ #57797] Deprecate safe_methods parameter. Unfortunately, version 2.27 patches a bug we were inadvertantly taking advantage of to implement the safe_methods parameter. Unless we can find a working implementation of safe_methods that is smaller than "make everything unsafe" then we can't continue to support safe_methods.

Using safe_methods now issues a deprecation warning, but it should work with older versions of Safe. I'm in no hurry to remove the feature, but I don't want anyone to use it who isn't already using it, until we know it can be supported in the future.

Thanks to Niko Tyni and the Debian Perl Group for submitting this bug report.


"uninitialized" warnings in templates were being generated at a line number within MicroMason instead of a line number within the template itself. Thanks to Mike Kelly for a patch: by concatenating an empty string to each TOKEN within the template, the warning's line number is shifted to inside the template where the interpolation took place.

Version 2.09


Fix test that was broken by changes in URI::Escape 1.30. Double quotes aren't reserved characters in URIs but they were previously encoded anyway. Test modified to use reserved single quotes instead, for URI::Escape testing.

Version 2.08


Fixed PassVariables bug: <%init> failed with -PassVariables plugin. Thanks to William Kern for reporting this.


Fixed [ #51727] [Patch] POD nit; thanks to Frank Wiegand for reporting this.

Version 2.07


Merge patch from Simon Cavalletto: fix bug reported in CPAN forum with "OUT" appearing in the input template stream. Thanks!

Update requirement for Test::More 0.48 or later in Makefile.PL. Tests using unlike() failed with Test::More version 0.47.

Fix problem in t/08_errors.t which caused test failures in Perl 5.6. The error message isn't as important as the test made it out to be, but the code didn't have a problem.


Remove documentation for unsupported compile(lines => ...) mode. Put it on ToDo instead.

Version 2.06


Fix bug reported in CPAN forum: substr() in was being used incorrectly, resulting in incorrect line numbering in some cases.


#51460: Clean up the tarball and resubmit a version that doesn't contain a stray .tgz file.

Version 2.05


Modify compilation error reporting: provide line numbers when dumping the compiled template into $@, and change the #line to match the line numbering correctly.


Fix bug reported by CPAN testers on some Windows boxes: use Cwd::abs_path for strict_root checking to avoid literal path separators in


Add a hint about -LineNumbers in the numbered template dump when a compilation error occurs.

Version 2.04


Fixed SKIP count in t/33_filters.t to prevent test failures when URI::Escape isn't installed.

Version 2.03


Happy Halloween.

Updated tests to use Test::More for better diagnostics via CPAN testers.

Tweaked t/34 with a longer sleep() since some linux hosts seemed to be sleeping for less than a second with sleep(1).

Version 2.02


Updated Changes.pod.

Fixed SKIP count in t/33 which caused test count mismatches when HTML::Entities wasn't installed.

Version 2.01


Fix a bug with TemplatePath error messages. If a template name was provided that didn't exist in the path, the error message generated by read_file didn't specify which template was requested. This version now croaks in resolve_path instead of returning undef and letting read_file croak.

Updated pod to reflect this change and document previously undocumented exception strings.

Modified undocumented exception strings for strict_root violations.

Version 2.0


Fix bug with || filter patch: it was erroneously removing the last character of the filtered token, which made it fail if there was no space before the |.

Bump version to 2.0

Version 1.993_01


Add LineNumbers mixin and associated tests.


Update TODO: move almost everything into a WISH LIST with a request for contributions, and make the main TODO list bug fixes and a few likely developments.


Merge test and patch from RT bug #21802: cache expiration bug.


Merge changes from RT bug #18435: filter problem with <% $thing || "default" %>


Bump version to 1.993_01

Version 1.993


Merge changes from pair Networks local branch, which have been in testing and production since Q1 2007; bump version to 1.993.

This includes:

TemplatePath mixin

Template lookups on a search path

TemplateDir/ Cache patch
 fix interaction of caching and TemplateDir/TemplatePath
Additional test files
Stop creating cache objects unless/until they're used

Version 1.992_01


Updated pod and makefiles for maintenance transition from Simon to Alan. Thanks for the wonderful module, Simon! I hope I can keep things under control.

Bumped version number.

Version 1.992


Updated ToDo.pod with a few ideas for upcoming releases.

Extended t/58-quicktemplate.t to demonstrate use of the pre_fill method.


Fixed incorrect handling of default values for array or hash variables in an <%args> block. Thanks to Alexander for the bug report.

Added extra newlines to the do blocks generated by Base's assemble(), so that <% exprs %> can contain a comment. Problem reported by Alexander.

Improved error reporting by changing the file name embedded in the CPP-style line number comment at the top of each stretch of generated Perl code. Based on a problem report from Alexander. This does not fix the line numbering problem, but at least the file name is more helpful than it used to be.


Added RoughDraft of "" based on a reply to a question via email from Alexander.


Fixed return value from Text::MicroMason::Cache::File set() method; thanks to Alan Ferrency for the helpful bug report and test case.


Extracted HasParams and StoreOne mixins from HTMLTemplate.

Added QuickTemplate mixin class with emulation for Text::QuickTemplate.


Added reference links to benchmarking section in Docs/ToDo.pod.

Added "local $^W;" in two test scripts to silence extra warning on Perl 5.005_04.

Bumped version number.

Version 1.991


Bumped version number.

Added ApacheHandler configuration options and basic documentation.


Added PLP mixin class with emulation for PLP templating package.

Added the skeleton for a basic ApacheHandler class.

Improved strict_root support in TemplateDir and added documentation for it.

Extracted argument passing logic from TextTemplate to create new PassVariables mixin.

Added Sprintf syntax mixin and basic tests.


Added DoubleQuote syntax mixin and basic tests.

Version 1.99


Added AllowGlobals mixin based on suggestion and patch from Jonas Alves. Reviewed similar functionality in HTML::Mason and added docs and tests.

Extracted debug options to separate Debug mixin class.

Changed name of internal new() method to create(), while propogating the mixin finding behavior from the Text::MicroMason facade up to Text::MicroMason::Base.

Renamed examples directory to samples.

Added read_handle method and output_sub attribute.

Added assembler_vars method and removed %Assembler global.


Fixed early exit of t/42-text_template.t to skip test if missing Text::Balanced.


Renamed the Mason compatibilty class to HTMLMason to match other syntax classes. Changed it to be a mixin like the other classes, instead of a subclass.

Switched to use of Class::MixinFactory and removed old class() and NEXT() methods.

Extracted new interpret() method from inside of compile().

Adjusted setting of options and attributes so that this doesn't happen within interpret().

Extracted list of related modules to new Docs::Related POD file.

Version 1.98


Fixed unprotected test dependency on Text::Balanced for TextTemplate emulation.

Fixed unexpected side-effect of change to parsing for single-character Filter flags.

Minor adjustments to POD documentation.

Version 1.97


Moved to do list into new pod file. Moved extra pod files into Docs namespace.

Added _printable to default set of functions in Filters. Tweaked parse_filters and get_filter_functions methods.

Changed internal names for ouput and include token types to expr and file. Corrected typo in one of the assembler token names.

Adjusted $Carp::CarpLevel in Base croak_msg().

Fixed test failure in t/33-filters.t reported by William Kern.


Fixed typo in ServerPages example; thanks to William Kern for pointing it out.


Adjustments to documentation in top-level package.

Version 1.96


Added PostProcess mixin class at the suggestion of Alan Ferrency.

Renamed a few keys in the hash returned by assembler_rules().

Moved syntax documentation to Mason subclass.

Version 1.95


Fixed problem with extra semicolons breaking code statements broken onto multiple % code lines; thanks to Alan Ferrency for test code to isolate the problem, now added to regression tests.


Documentation updates.

Version 1.94


Factored subclass-specific lex_token() method out from superclass lex() method.

Added Embperl mixin class with emulation for HTML::Embperl.

Merged Devel.pod back in to other package documentation.


Replaced assembler attribute with assembler_rules() method.

Added Mason subclass and moved some functionality to there from Base.

Documentation updates.


Added HTMLTemplate mixin class with emulation for HTML::Template.


Added TextTemplate mixin class with emulation for Text::Template.

Version 1.93


Instead of run-time eval of @MIXIN to fix SUPER resolution, now using a new SUPER method.


Documentation updates.

Version 1.92


Uploaded to CPAN to fix packaging issue with 1.9_1.

Version 1.91


Posted description of mixin mechanism to PerlMonks for discussion.

Debugged CompileCache and finished ExecuteCache. Added test scripts.

Debugged TemplateDir and added test script.

Implemented support for one-time options passed to compile that override other attributes. Adjusted Safe facade to prevent this from being done there, in order to avoid escapes from a Safe compartment.


Reorganized t/ directory.

Version 1.90


Documentation updates.


Documentation updates.

Version 1.55


Documentation updates.

Version 1.54


Renamed "interpret" method to "execute" for consistency with function interface.

Moved try_ functionality to new ErrorCatching mixin.

Generalized behavior of assemble method; moved template elements into %Assembly hash.

Version 1.53


Moved Safe functionality to new Safe mixin.

Moved filtering functionality to new Filters mixin.


Added mixin inheritance hacking logic based on DBIx::SQLEngine::Record::Class.

Version 1.52


Extracted Changes to separate POD document.


Additional work.

Version 1.51


Refactoring of method interface to merge compie and interpretation into single subroutines with parameters to indicate whether we're reading text or a file.

Added initial support for filtering interpolated expressions based on a patch and extended discussion with Alan Ferrency.

Packaged as version 1.51 but not released to CPAN.


Refactored to object-oriented implementation to allow subclassing. Inspired by discussion with Alan Ferrency about how to extend functionality.

Started CodeCache subclass based on experimental caching code included in 1.07.

Started TemplateDir subclass with base directory and relative path calculations based on a patch from Tommi Maekitalo.

Incorporated patch from Tommi Maekitalo to put default values from an <%args> block into the %ARGS variable as well as the separate named variables.

Created ServerPages subclass based on feature request from William Kern.


Moved package documentation into separate ReadMe.pod.


Version 1.07


Discard line break after <%perl> block as suggested by Tommi Maekitalo. Note that removing these line breaks may affect the rendering of your current templates! Although I am typically hesitant to change established behavior, this does improve the template output and brings us into line with HTML::Mason's behavior.

Added $Debug flag and support for <%args> blocks based on a contribution by Tommi Maekitalo.

Adjusted internals to allow block reordering, and added support for <%init> and <%once>.

Released as Text-MicroMason-1.07.tar.gz.

Version 1.06


Changed the way that subroutines were scoped into the Text::MicroMason::Commands namespace so that Safe compartments with separate namespaces and shared symbols have the visibility that one would expect.

Fixed a bug in which an unadorned percent sign halted parsing, as reported by William Kern at PixelGate. Added a test to the end of 6-regression.t that fails under 1.05 but passes under 1.06 to confirm this.

Simplified parser regular expressions by using non-greedy matching.

Added documentation for *_file() functions. Corrected documentation to reflect the fact that template code is not compiled with "use safe" in effect by default, but that this might change in the future.

Released as Text-MicroMason-1.06.tar.gz.

Version 1.05


Adjusted regular expression based on parsing problems reported by Philip King and Daniel J. Wright, related to newlines and EOF. Added regression tests that fail under 1.04 but pass under 1.05 to ensure these features keep working as expected.

Added non-printing-character escaping to parser failure and debugging messages to better track future reports of whitespace-related bugs.

Moved tests from into t/ subdirectory.

Added experimental suppport for file code cache in compile_file_codecache.

Released as Text-MicroMason-1.05.tar.gz.

Version 1.04


Adjusted regular expression based on parsing problems reported by Mark Hampton.

Added file-include support with <& ... &> syntax.

Documentation tweaks. Adjusted version number to simpler 0.00 format. Released as Text-MicroMason-1.04.tar.gz.


Documentation tweaks based on feedback from Pascal Barbedor. Updated author's contact information.

Version 1.0.3


Renamed from HTML::MicroMason to Text::MicroMason. Documentation tweaks. Released as Text-MicroMason-1.0.3.tar.gz.

Version 1.0.2


Munged interface for clarity. Added Safe support. Adjusted docs to reflect feedback from mason-users. Released as HTML-MicroMason-1.0.2.tar.gz.

Version 1.0.1


Parser tweakage; additional documentation. Added Exporter support. Released as HTML-MicroMason-1.0.1.tar.gz.


Added try_interpret; documented error messages.

Version 1.0.0


Extended documentation; added makefile, test script. Renamed accumulator to $OUT to match Text::Template. Released as HTML-MicroMason-1.0.0.tar.gz.




For distribution, installation, support, copyright and license information, see Text::MicroMason::Docs::ReadMe.