Changes for version 1.29_02

    • ** Support for mod_perl-2.00 (mod_perl-1.99 is no longer supported because of API changes in 2.0RC5).
    • Mason recovers more gracefully from an empty or corrupted object file. Task id #579.
    • Fixed bug with content type being reset when decline_dirs=0. Submitted by Brian Phillips. Task id #584.
    • Put "Mason" prefix back in Params.pod. Task id #575.
    • Fixed fetch_comp(undef) to not return an empty hash. Task id #578.

Changes for version 1.29_01

    • ** Mason now requires Perl 5.6.0 or later. However, because 5.6.0 has so many problems, it cannot be officially supported; we strongly recommend upgrading to at least 5.6.1.
    • ** Mason now requires version 1.24 of mod_perl in the ApacheHandler module.
    • ** The behaviors of $m->flush_buffer and $m->clear_buffer have been simplified. $m->flush_buffer only acts on the top-level output buffer; $m->clear_buffer clears all output buffers. Task id #554.
    • ** max_code_cache_size is now kept in terms of number of components, not bytes, and its default value is 'unlimited'.
    • ** Components with a <%filter> and a cache_self are no longer cached in their filtered state. Performance-related code simplifications made this behavior difficult to maintain. Long term this would be easier to implement with a cache_self component <%flag>.
    • ** All compiler properties are now read-only. If you need to change compiler properties on a per-request basis, you'll need to create multiple compiler and interpreter objects.
    • ** comp_exists may try to load the designated component, and may throw an error if it contains a syntax error.
    • ** The current_time method, deprecated in 1.1x, has been removed.
    • ** The HTML::Mason::Buffer class has been eliminated for performance reasons. You can use separate components, methods, or subcomponents and scomp to achieve the same effects as buffer pushes and pops.
    • Significantly improved performance in component execution, especially in static_source mode.
    • Added static_source_touch_file, making it much easier to update a server running in static_source mode.
    • Added a plugin architecture. Plugin classes can perform actions at key points, e.g. before and after each request and each component call. See HTML::Mason::Plugin for documentation. Task id #24. Initial implementation by Doug Treder.
    • Added the ability to change component root(s) on the fly if the dynamic_comp_root parameter is turned on. Task id #561. Suggested by Alex Robinson.
    • Added enable_autoflush parameter. When turned off, Mason can compile components to a more efficient form.
    • Changed the </&> tag to allow the starting component name to be included. e.g. <&| /foo &> ... </& /foo >. Task id #556. Suggested by Alex Robinson, John Williams, and others.
    • Moved the notion of component roots (single and multiple) from the Resolver to the Interpreter. This improved the performance of multiple component roots in conjunction with static source mode. Any resolver, file-based or otherwise, can benefit from component root settings or choose to ignore them.
    • Added the compiler object_id to the object file path, so that multiple versions of Mason do not collide in the same object directory. Task id #569.
    • Added .obj (or a configurable extension) to object filenames. Task id #152. Suggested by John Tobey.
    • Added $m->clear_and_abort, syntactic sugar for the common idiom of calling clear_buffer() and then abort(). Task id #505.
    • Added an official comment syntax, <% # ... %>, and documented the various comment markers in the developer's manual. Task id #566.
    • Added buffer_preallocate_size parameter, which allows you to potentially reduce buffer reallocations.
    • Augmented the 'could not find component' error message with the current component root(s). Task id #562.
    • Mason now throws an error if the path specified in a component's 'inherit' flag cannot be found. Task id #480.
    • Fixed comp_exists to work with any path accepted by comp or fetch_comp, and fixed fetch_comp to stop throwing errors for certain bad paths. Task id #572.
    • Fixed $m->decline to work from /dhandler. Task id #573. Submitted by Carl Raiha.
    • Using 'next' or 'last' without a loop can no longer corrupt the component stack. Task id #539.


Mason Administrator's Manual
Mason Developer's Manual
Mason configuration parameters
Documentation on Subclassing Internal Mason classes


A bundle to install the HTML::Mason package
High-performance, dynamic web site authoring system
Mason/mod_perl interface
Use Mason in a CGI environment
Base cache object
Compile Mason component source
A Compiler subclass that generates Mason object code
Mason Component Class
Mason File-Based Component Class
Mason Subcomponent Class
represents information about an component
Functions to escape text for Mason
Exception objects thrown by Mason
An Apache object emulator for use with Mason
Mason Component Interpreter
Generates events based on component source lexing
Used to create simple get & get/set methods in other classes
Old module for compiling components
Plugin Base class for Mason
encapsulates arguments passed to plugin methods
Mason Request Class
Component path resolver base class
Component path resolver for file-based components
a do-nothing resolver
Test harness for testing Mason
Function library used internally in Mason
Publically available functions useful outside of Mason


in lib/Apache/
in lib/HTML/Mason/
in lib/HTML/Mason/
in lib/HTML/Mason/
in lib/HTML/Mason/
in lib/HTML/Mason/
in lib/HTML/Mason/
in lib/HTML/Mason/Plugin/
in lib/HTML/Mason/Plugin/
in lib/HTML/Mason/Plugin/
in lib/HTML/Mason/Plugin/
in lib/HTML/Mason/
in lib/HTML/Mason/
in lib/HTML/Mason/