From b9ea492bc08737da88f898d11f287bbbed264274 Mon Sep 17 00:00:00 2001 From: Jonathan Swartz Date: Wed, 11 Jul 2012 19:49:07 -0700 Subject: [PATCH] update Changes from previous dist --- Changes | 3101 +++++++++++++++++++++++++++---------------------------- 1 file changed, 1523 insertions(+), 1578 deletions(-) diff --git a/Changes b/Changes index 93d8b2d4..7dfd7a80 100644 --- a/Changes +++ b/Changes @@ -1,1945 +1,1890 @@ Revision history for HTML::Mason. +An HTML version of this file, complete with links to documentation, is +available at http://www.masonhq.com/code/history.html. + ** denotes an incompatible change 1.50 Jul 11, 2012 -[ DISTRIBUTION ] + [ DISTRIBUTION ] -- Switch to Dist::Zilla -- Eliminate HTML docs from distribution, these are available on the web -- Move live Apache tests to author-only -- Perltidy files + - Switch to Dist::Zilla + - Eliminate HTML docs from distribution, available on web + - Move live Apache tests to author-only + - Perltidy files 1.49 Feb 27, 2012 -[ DOCS ] + [ DOCS ] -- Fixed misspellings in docs. RT #74676. Reported by Salvatore Bonaccorso. + - Fixed misspellings in docs. RT #74676. Reported by Salvatore Bonaccorso. 1.48 Feb 3, 2012 -[ BUG FIXES ] + [ BUG FIXES ] -- Calling a subcomponent from inside an anonymous component (created via + - Calling a subcomponent from inside an anonymous component (created via $interp->make_component) caused an uninitialized value warning. Reported by Javier Amor Garcia. - 1.47 Oct 21, 2011 -[ BUG FIXES ] + [ BUG FIXES ] -- Silenced an uninitalized value warning from ApacheHandler with newer + - Silenced an uninitalized value warning from ApacheHandler with newer versions of Perl. RT #61900. - 1.46 Aug 1, 2011 -[ DOCS ] - -- Mention Mason 2 in documentation + [ DOCS ] + - Mention Mason 2 in documentation 1.45 Apr 3, 2010 -[ BUG FIXES ] + [ BUG FIXES ] -- Silenced some new warnings that appeared when using Mason with Perl + - Silenced some new warnings that appeared when using Mason with Perl 5.12.0+. Reported by Jesse Vincent. - 1.44 Jan 4, 2010 -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- Use Log::Any to log various events, such as the start and end of each + - Use Log::Any to log various events, such as the start and end of each request and each component call. -- Add $m->log, allowing easy logging to a component-specific namespace. - -- Fix use of CHI when no data directory is specified. + - Add $m->log, allowing easy logging to a component-specific namespace. + - Fix use of CHI when no data directory is specified. 1.43 Dec 25, 2009 -[ BUG FIXES ] + [ BUG FIXES ] -- If a component was located in a patch with spaces, the feature which + - If a component was located in a patch with spaces, the feature which referred to errors by their source file line number was broken. This could cause test failures if the package was downloaded into a path with spaces by CPAN. Reported by Shawn Moore. RT #53072. -- HTML::Entities is no longer an optional dependency. This fixes some issues + - HTML::Entities is no longer an optional dependency. This fixes some issues with packaged versions of Mason. Reported by Jens Rehsack. RT #48890. -- $m->flush_buffer is now ignored when inside $m->scomp or $m->content. Patch + - $m->flush_buffer is now ignored when inside $m->scomp or $m->content. Patch by Frédéric Brière, with extra tests from Ruslan Zakirov. RT #38924. - 1.42 May 7, 2009 -[ BUG FIXES ] + [ BUG FIXES ] -- Fix 10b-cache-chi.t to work with latest version of CHI - expire_if + - Fix 10b-cache-chi.t to work with latest version of CHI - expire_if and ref of cache changed -- Fixed a bug where attempting to load a module that failed to compile + - Fixed a bug where attempting to load a module that failed to compile in a Mason component could mask the compilation error. RT #39803. -- Fixed the print method in HTML::Mason::FakeApache. It was including + - Fixed the print method in HTML::Mason::FakeApache. It was including the object itself in the output. Patch by Martin Petricek. RT #43035. - 1.41 May 5, 2009 -[ BUG FIXES ] + [ BUG FIXES ] -- This is a one-fix release to get this module working with the latest + - This is a one-fix release to get this module working with the latest version of Exception::Class (1.27). - 1.40 Jul 24, 2008 -[ BUG FIXES ] + [ BUG FIXES ] -- Attempting to set multiple cookies when running under CGIHandler + - Attempting to set multiple cookies when running under CGIHandler failed. Patch by Andrej Czapszys. RT #33710. -- The Request->alter_superclass() method could cause a segfault + - The Request->alter_superclass() method could cause a segfault (sometimes) with perl 5.10.0. Reported and patched by Jesse Vincent. - 1.39 Jan 30, 2008 -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- CHI may now be used as the backend for $m->cache as an updated + - CHI may now be used as the backend for $m->cache as an updated alternative to Cache::Cache. Among other things, this facilitates easy use of Cache::FastMmap and memcached for data caching. Cache::Cache is still the default for now, and is still listed as a prereq for Mason. - 1.38 Dec 20, 2007 -[ BUG FIXES ] + [ BUG FIXES ] -- (Hopefully) fixed a problem where the cpan shell thought that Mason + - (Hopefully) fixed a problem where the cpan shell thought that Mason needed mod_perl1 as a prereq when it was trying to require a newish version of mod_perl2. -- If you called $r->send_http_header() explicitly in a component under + - If you called $r->send_http_header() explicitly in a component under mod_perl 1.x, headers would end up getting sent again once the component finished executing. Reported by Brett Gardner. -- Component call with content end tags could not span multiple + - Component call with content end tags could not span multiple lines. Fixing this makes it consistent with the opening tag. Patch by Alex Robinson. -- Includes a possible fix for a test failure in 10-cache.t. This + - Includes a possible fix for a test failure in 10-cache.t. This failure is a problem in the test code, not the Mason core code. - 1.37 Sep 6, 2007 -[ BUG FIXES ] + [ BUG FIXES ] -- Mason could send the HTTP headers twice under mod_perl 1.x when + - Mason could send the HTTP headers twice under mod_perl 1.x when making a request for a directory path that was handled by a dhandler. Reported by David Beaudet. -- If you set the Content-Type header in a handler sub before passing + - If you set the Content-Type header in a handler sub before passing control to Mason via ApacheHandler, this value was overwritten if the request was for a directory path. -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- Make t/08-ah.t and t/16-live-cgi.t more verbose about why they are + - Make t/08-ah.t and t/16-live-cgi.t more verbose about why they are skipping tests when they do so. Based on a patch from C.J. Adams-Collier. - 1.36 Jun 10, 2007 -[ BUG FIXES ] + [ BUG FIXES ] -- If a component with content call ending tag appeared inside a + - If a component with content call ending tag appeared inside a subcomp or method without an opening tag, then the compiler dies with a Perl error, rather than reporting the error usefully. Reported by Rich Williams. -- Under mod_perl 2, if decline_dirs was false and a directory was + - Under mod_perl 2, if decline_dirs was false and a directory was requested, you got a "Use of uninitialized value" warning from ApacheHandler in your logs. Reported by Ogden Nefix. -- HTML::Entities is now a prereq. Not requiring it made for various + - HTML::Entities is now a prereq. Not requiring it made for various weird gyrations in the tests that didn't seem to work all the time, causing various failures. Fixes RT #24827. -- Request::CGIHandler->exec() now returns the return value from + - Request::CGIHandler->exec() now returns the return value from executing the component, just like a normal Request. Reported by Adrian Irving-Beer. -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- Added a new Compiler::ToObject parameter, + - Added a new Compiler::ToObject parameter, named_component_subs. Turning this on makes it possible to profile components. -- Added a new Request parameter, component_error_handler. This can be + - Added a new Request parameter, component_error_handler. This can be set to change how component compilation and runtime errors are handled. It can also be set to false to just let errors go unhandled, which could speed up apps that throw a lot of non-object exceptions. - 1.35 Oct 17, 2006 -[ BUG FIXES ] - -- Version 1.34 introduced a bug that caused corruption of the callers -stack when a component call with content was used. + [ BUG FIXES ] -- When Mason tried to load a package required for a feature (like -Cache::Cache for $m->cache) and this failed, the error message would -say something like "Can't locate Cache::Cache". However, the real -error could be that Cache::Cache was present, but a module required by -Cache::Cache was not. Now we report the real missing module. + - Version 1.34 introduced a bug that caused corruption of the callers + stack when a component call with content was used. -- Some people saw a spurious test failure in 05-request.t. RT #22099. + - When Mason tried to load a package required for a feature (like + Cache::Cache for $m->cache) and this failed, the error message would + say something like "Can't locate Cache::Cache". However, the real + error could be that Cache::Cache was present, but a module required by + Cache::Cache was not. Now we report the real missing module. -- Added Module::Build to the build_requires prereqs. + - Some people saw a spurious test failure in 05-request.t. RT #22099. + - Added Module::Build to the build_requires prereqs. 1.34 Oct 14, 2006 -[ BUG FIXES ] + [ BUG FIXES ] -- List Module::Build as a build prereq in the Build.PL, so it shows up -in META.yml. Reported by Colin Henein. RT #22097. + - List Module::Build as a build prereq in the Build.PL, so it shows up + in META.yml. Reported by Colin Henein. RT #22097. -- Apache::Request and mod_perl{1,2} will no longer show up as prereqs -in META.yml. Requested by Jesse Vincent. + - Apache::Request and mod_perl{1,2} will no longer show up as prereqs + in META.yml. Requested by Jesse Vincent. -- Fixed a serious memory leak bug where an object referenced in -arguments to another component was never destroyed. Reported by -Dominic Mitchell. + - Fixed a serious memory leak bug where an object referenced in + arguments to another component was never destroyed. Reported by + Dominic Mitchell. -- Using $m->call_next from a helper component should reset base_comp -to the request_comp. Reported by Mark Elrod. + - Using $m->call_next from a helper component should reset base_comp + to the request_comp. Reported by Mark Elrod. -- The 08-ah.t and 16-live-cgi.t test files could fail with an error -like "Failed to re-load 'Mason::Build'" when Mason was being installed -via the CPANPLUS shell (and maybe other cases). Reported by David -Wheeler. + - The 08-ah.t and 16-live-cgi.t test files could fail with an error + like "Failed to re-load 'Mason::Build'" when Mason was being installed + via the CPANPLUS shell (and maybe other cases). Reported by David + Wheeler. -- Fixed a bug where $m->clear_buffer inside a component called from a -comp_with_content did not clear all buffers. + - Fixed a bug where $m->clear_buffer inside a component called from a + comp_with_content did not clear all buffers. -[ ENHANCEMENTS ] - -- Added support for get_server_port() in FakeApache. Patch from Dieter -Piercey. + [ ENHANCEMENTS ] + - Added support for get_server_port() in FakeApache. Patch from Dieter + Piercey. 1.33 May 28, 2006 -[ BUG FIXES ] - -- If $m->flush_buffer() was called when there was a filter somewhere -in the component chain, the flush did nothing. Task id #596. Reported -by Shane McCarron. + [ BUG FIXES ] -- Added several tests for $m->flush_buffer() and $m->clear_buffer(), -which will hopefully avoid more bugs in this part of the code. + - If $m->flush_buffer() was called when there was a filter somewhere + in the component chain, the flush did nothing. Task id #596. Reported + by Shane McCarron. -- On Win32, a test failed when Mason tried to use rename to move a dir -into an existing dir. Patch by Shane McCarron. Task id #594 and RT -#17828. + - Added several tests for $m->flush_buffer() and $m->clear_buffer(), + which will hopefully avoid more bugs in this part of the code. -- Trying to load HTML::Mason::ApacheHandler outside of mod_perl caused -an error "like Undefined subroutine &Apache::perl_hook called at -/usr/local/share/perl/5.8.7/HTML/Mason/ApacheHandler.pm line -257". While it will never _run_ outside of mod_perl, it should at -least load. + - On Win32, a test failed when Mason tried to use rename to move a dir + into an existing dir. Patch by Shane McCarron. Task id #594 and RT + #17828. -- Fixed test in 14a-fake_apache.t that failed with CGI.pm >= 3.16. + - Trying to load HTML::Mason::ApacheHandler outside of mod_perl caused + an error "like Undefined subroutine &Apache::perl_hook called at + /usr/local/share/perl/5.8.7/HTML/Mason/ApacheHandler.pm line + 257". While it will never _run_ outside of mod_perl, it should at + least load. -- The example code in the HTML::Mason::Resolver::Null code was -just wrong. Fixed by John Siracusa. + - Fixed test in 14a-fake_apache.t that failed with CGI.pm >= 3.16. -- Fixed a test failure in 06-compile.t when using bleadperl. RT -#17118. + - The example code in the HTML::Mason::Resolver::Null code was + just wrong. Fixed by John Siracusa. + - Fixed a test failure in 06-compile.t when using bleadperl. RT + #17118. 1.32 January 3, 2006 -[ BUG FIXES ] + [ BUG FIXES ] -- Under mod_perl 1.x with error_mode set to output, the headers were -sent after the content when a compilation error occurred. Reported by -Gareth Kirwan. Task id #592. + - Under mod_perl 1.x with error_mode set to output, the headers were + sent after the content when a compilation error occurred. Reported by + Gareth Kirwan. Task id #592. -- URI-escape utf8 characters the same way that CGI::escape and -URI::Escape::uri_escape_utf8 do. Patch by Denis Shaposhnikov. + - URI-escape utf8 characters the same way that CGI::escape and + URI::Escape::uri_escape_utf8 do. Patch by Denis Shaposhnikov. -- On startup Mason creates a file named ".__obj_create_marker" in the -object directory. Under mod_perl, Mason was not chmod'ing the file -when Apache was started as root. This led to permission errors in -environments where the Interp is created anew every request. Task id -#593. + - On startup Mason creates a file named ".__obj_create_marker" in the + object directory. Under mod_perl, Mason was not chmod'ing the file + when Apache was started as root. This led to permission errors in + environments where the Interp is created anew every request. Task id + #593. -- Treat the return value of component execution as a string in -ApacheHandler. This prevent warnings about comparing the empty string -to a number when a component returns "". Reported by Benjamin Franz. + - Treat the return value of component execution as a string in + ApacheHandler. This prevent warnings about comparing the empty string + to a number when a component returns "". Reported by Benjamin Franz. -- Setting a MasonPlugins Apache parameter caused a fatal error. Patch -by David Jack Olrik. - -- Calling base_comp() on the Request object inside a plugin's -start_request_hook method caused an infinite recursion in Mason. -Reported by Jesse Vincent. + - Setting a MasonPlugins Apache parameter caused a fatal error. Patch + by David Jack Olrik. + - Calling base_comp() on the Request object inside a plugin's + start_request_hook method caused an infinite recursion in Mason. + Reported by Jesse Vincent. 1.3101 August 23, 2005 -[ BUG FIXES ] - -- One last fix for CGIHandler. If you provided your own out_method it -was ignoring it and using its own. Reported by David Glasser. + [ BUG FIXES ] + - One last fix for CGIHandler. If you provided your own out_method it + was ignoring it and using its own. Reported by David Glasser. 1.31 August 20, 2005 -[ BUG FIXES ] + [ BUG FIXES ] -- Fix several regressions in the CGIHandler and FakeApache modules. -Some changes from the stable branch were never merged into the trunk -before 1.30. Reported by Jesse Vincent. Task id #589. + - Fix several regressions in the CGIHandler and FakeApache modules. + Some changes from the stable branch were never merged into the trunk + before 1.30. Reported by Jesse Vincent. Task id #589. -- Under Apache2, if an ApacheHandler object was created during server -startup and the associated Interp object created any files or -directories, Mason would crash when attempting to chown those -files/dirs to the uid/gid that Apache will use after forking. Task -#586. + - Under Apache2, if an ApacheHandler object was created during server + startup and the associated Interp object created any files or + directories, Mason would crash when attempting to chown those + files/dirs to the uid/gid that Apache will use after forking. Task + #586. -- The compiler was adding an extra block around a component's -body, which meant that variables declared in the body (in perl lines -or blocks) were not seen in the cleanup section. Task id #587. + - The compiler was adding an extra block around a component's + body, which meant that variables declared in the body (in perl lines + or blocks) were not seen in the cleanup section. Task id #587. -- The compiler was also adding "no warnings 'uninitialized'" in this -block, which could hide various errors. + - The compiler was also adding "no warnings 'uninitialized'" in this + block, which could hide various errors. -- Hopefully fix $VERSION in ApacheHandler so PAUSE will not be -confused and think we have regressed. - -- Turned off some prompts during the module's installation. These -were intended to help new users configure Apache to run Mason -components, but they're probably a bit confusing. Will return in a -future release as a separate script that can be run from the command -line. + - Hopefully fix $VERSION in ApacheHandler so PAUSE will not be + confused and think we have regressed. + - Turned off some prompts during the module's installation. These + were intended to help new users configure Apache to run Mason + components, but they're probably a bit confusing. Will return in a + future release as a separate script that can be run from the command + line. 1.30 August 11, 2005 -[ INCOMPATIBLE CHANGES ] - -- ** Under mod_perl2, MasonArgsMethod will default to "CGI", since -libapreq2 is still in development. If you have successfully installed -libapreq2, just set MasonArgsMethod to "mod_perl" to use it. + [ INCOMPATIBLE CHANGES ] -[ ENHANCEMENTS ] + - ** Under mod_perl2, MasonArgsMethod will default to "CGI", since + libapreq2 is still in development. If you have successfully installed + libapreq2, just set MasonArgsMethod to "mod_perl" to use it. -- Some doc tweaks to clarify that Mason should work out of the box -with both mod_perl 1 and 2. -- Added "use warnings" to all modules and made sure all tests ran -warnings-free. + [ ENHANCEMENTS ] -[ BUG FIXES ] + - Some doc tweaks to clarify that Mason should work out of the box + with both mod_perl 1 and 2. + - Added "use warnings" to all modules and made sure all tests ran + warnings-free. -- Silence a warning when HTML::Mason::ApacheHandler was loaded outside -of mod_perl. -- Support renamed Apache2::Status module. + [ BUG FIXES ] + - Silence a warning when HTML::Mason::ApacheHandler was loaded outside + of mod_perl. + - Support renamed Apache2::Status module. 1.29_02 June 22, 2005 -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- ** 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. + - ** 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. -[ BUG FIXES ] + [ BUG FIXES ] -- 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. -- static_source_touch_file did not take effect until after one request -for a top-level component. Reported by Lai Zit Seng. Task id #576. + - 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. + - static_source_touch_file did not take effect until after one request + for a top-level component. Reported by Lai Zit Seng. Task id #576. 1.29_01 January 25, 2005 -[ INCOMPATIBLE CHANGES ] - -- ** 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. - -[ ENHANCEMENTS ] - -- 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 &> ... . 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. - -[ BUG FIXES ] - -- 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. - + [ INCOMPATIBLE CHANGES ] + + - ** 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. + + [ ENHANCEMENTS ] + + - 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 &> ... . 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. + + [ BUG FIXES ] + + - 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. 1.28 November 6, 2004 -This version is entirely identical to 1.27 except for a fix to make -CPAN/PAUSE properly index the version number in -HTML::Mason::ApacheHandler. If you already installed 1.27 you do not -need to install this version unless you want to fix the "out of date -modules" report from the CPAN or CPANPLUS shells. - + This version is entirely identical to 1.27 except for a fix to make + CPAN/PAUSE properly index the version number in + HTML::Mason::ApacheHandler. If you already installed 1.27 you do not + need to install this version unless you want to fix the "out of date + modules" report from the CPAN or CPANPLUS shells. 1.27 October 28, 2004 -[ ENHANCEMENTS ] - -- Full support for Apache2/mod_perl2. + [ ENHANCEMENTS ] -[ BUG FIXES ] + - Full support for Apache2/mod_perl2. -- The request object was not available as $m in the preamble if -in_package was set. Reported by David Wheeler and David Baird. Task -id #538. + [ BUG FIXES ] -- Component with subcomponents or methods were not getting freed when -they were purged from the code cache. Task id #549. + - The request object was not available as $m in the preamble if + in_package was set. Reported by David Wheeler and David Baird. Task + id #538. -- Component calls (<& &>) starting with a newline were compiled -incorrectly. Reported by Rick Delaney. Task id #564. + - Component with subcomponents or methods were not getting freed when + they were purged from the code cache. Task id #549. -- If both a parent request and subrequest had autoflush set, output -from the subrequest wasn't actually flushed. Reported by Tony -Clayton. Task id #550. + - Component calls (<& &>) starting with a newline were compiled + incorrectly. Reported by Rick Delaney. Task id #564. -- The documentation in HTML::Mason::Tests for the path and call_path -parameters was wrong. Reported by Michael Gray. Task id #528. + - If both a parent request and subrequest had autoflush set, output + from the subrequest wasn't actually flushed. Reported by Tony + Clayton. Task id #550. -- Line numbers in errors were incorrectly reported if the error -happened in code after an <%args>, <%attr>, or <%flags> block. -Reported by Tony Clayton. Task id #552. + - The documentation in HTML::Mason::Tests for the path and call_path + parameters was wrong. Reported by Michael Gray. Task id #528. -- The Apache handler now only sends headers once if make_request() -aborts, such as when a redirect is executed in a -MasonX::Interp::WithCallbacks callback. + - Line numbers in errors were incorrectly reported if the error + happened in code after an <%args>, <%attr>, or <%flags> block. + Reported by Tony Clayton. Task id #552. + - The Apache handler now only sends headers once if make_request() + aborts, such as when a redirect is executed in a + MasonX::Interp::WithCallbacks callback. 1.26 April 5, 2004 -[ BUG FIXES ] + [ BUG FIXES ] -- The fix to make CGIHandler support flush_buffer and autoflush caused -it to not rethrow any exceptions created during the request. If -error_mode was set to 'fatal', then an error would simply cause no -output to be generated. Task id #531. + - The fix to make CGIHandler support flush_buffer and autoflush caused + it to not rethrow any exceptions created during the request. If + error_mode was set to 'fatal', then an error would simply cause no + output to be generated. Task id #531. -- A comment in the last line of a component call with content caused a -syntax error in the compiled component. Reported by Todd Goldenbaum. -Task id #530. + - A comment in the last line of a component call with content caused a + syntax error in the compiled component. Reported by Todd Goldenbaum. + Task id #530. -- The various request handling methods in CGIHandler once again return -the value of calling the Interp object's exec() method. + - The various request handling methods in CGIHandler once again return + the value of calling the Interp object's exec() method. -- CGIHandler now explicitly handles redirect statuses when an abort -exception is thrown from the Interp object's exec() method. This -fixes some problems when this module was used with David Wheeler's -MasonX::Interp::WithCallbacks module. - -- Using a <%shared> block when "in_package" was set to something other -than HTML::Mason::Commands led to an error like "Can't call method -"call_dynamic" on an undefined value". Reported by David Wheeler. -Task id #535. + - CGIHandler now explicitly handles redirect statuses when an abort + exception is thrown from the Interp object's exec() method. This + fixes some problems when this module was used with David Wheeler's + MasonX::Interp::WithCallbacks module. + - Using a <%shared> block when "in_package" was set to something other + than HTML::Mason::Commands led to an error like "Can't call method + "call_dynamic" on an undefined value". Reported by David Wheeler. + Task id #535. 1.25 December 12, 2003 -[ BUG FIXES ] + [ BUG FIXES ] -- CGIHandler did not support $m->flush_buffer or autoflush. Reported -by Shane McCarron. -- Every line in the error stacktrace had a 'g' appended to it in HTML -error mode. -- The HTML error display of the stacktrace was not filtering out some -packages that it should have, so there were extra lines that made it -harder to find the real error. -- Several FakeApache methods were broken: path_info, uri, and -the_request. Reported by Matthias F. Brandstetter. + - CGIHandler did not support $m->flush_buffer or autoflush. Reported + by Shane McCarron. + - Every line in the error stacktrace had a 'g' appended to it in HTML + error mode. + - The HTML error display of the stacktrace was not filtering out some + packages that it should have, so there were extra lines that made it + harder to find the real error. + - Several FakeApache methods were broken: path_info, uri, and + the_request. Reported by Matthias F. Brandstetter. -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- The CGIHandler request object now supports the autoflush parameter. + - The CGIHandler request object now supports the autoflush parameter. 1.24 November 12, 2003 -[ BUG FIXES ] - -- Two tests in 04-misc.t, #9 and #10, failed if Params::Validate 0.66+ -was installed. This happened because an error message given by -Params::Validate changed slightly, and was not a problem in the Mason -core code. -- The Component object method attr_if_exists returned 0 when the -attribute didn't exist, instead of undef as is documented. Reported -by Chris Reinhardt. -- The HTML::Mason::Resolver::File glob_path method, which is used for -the preloads feature, now uses File::Glob::bsd_glob when run with Perl -5.6.0+. This function properly handles spaces in filenames, which are -legal on most systems, and common on Win32. Implemented by Autrijus -Tang. -- The Admin guide erroneously said that the default component root -when running Mason outside a web environment was "/". It is the -current working directory. Reported by Patrick Kane. - + [ BUG FIXES ] + + - Two tests in 04-misc.t, #9 and #10, failed if Params::Validate 0.66+ + was installed. This happened because an error message given by + Params::Validate changed slightly, and was not a problem in the Mason + core code. + - The Component object method attr_if_exists returned 0 when the + attribute didn't exist, instead of undef as is documented. Reported + by Chris Reinhardt. + - The HTML::Mason::Resolver::File glob_path method, which is used for + the preloads feature, now uses File::Glob::bsd_glob when run with Perl + 5.6.0+. This function properly handles spaces in filenames, which are + legal on most systems, and common on Win32. Implemented by Autrijus + Tang. + - The Admin guide erroneously said that the default component root + when running Mason outside a web environment was "/". It is the + current working directory. Reported by Patrick Kane. 1.23 September 8, 2003 -[ ENHANCEMENTS ] - -- Lots of enhancements to the Apache.pm emulation when using the -CGIHandler module. Implemented by David Wheeler. -- The fact that autohandlers or dhandlers can be turned off by setting -autohandler_name or dhandler_name to "" has now been documented, and -we explicitly check for this in the code. Task id #499. -- The ApacheHandler module now handles certain exceptions -(TopLevelNotFound, Abort, Decline) thrown from the Interp class's -make_request method by returning the desired error code. With the -default Mason Interp & Request classes, this will never happen. -However, subclasses may want to throw exceptions when constructing a -request. Implemented by David Wheeler. - -[ BUG FIXES ] - -- If any code type parameters were set in the httpd.conf file, Mason -died trying to read them. This bug was introduced in version 1.20. -Task id #496. Reported by David Wheeler. -- $m->caller, $m->callers and $m->caller_args now return undef or an -empty list instead of crashing when the specified stack level does not -exist. Task id #495. Reported by Bernhard Schmalhofer. -- The busy_lock option to $m->cache->get did not accept did not accept -string values for durations, like "4m". Task id #484. Reported by -Igor Muratov. -- When generating the HTML error message page, we now only use basic -HTML escaping. This fixes two problems. One is that if -HTML::Entities is not installed, using the "|h" escape flag in the -error display component causes an endless loop. The other is that the -"|h" flag can mangle non-Latin-1 characters. Task ids #497 and #494. -Reported by Harmen and Oleg Bartunov respectively. -- If a component generated output, then called another component via -$m->scomp, and that other component attempted to clear the buffer and -then abort, any output generated before the call to $m->scomp was -still sent to the client. This broke calling $m->redirect inside an -$m->scomp call. Task id #498. Reported by Kim Alexander Hansen. - + [ ENHANCEMENTS ] + + - Lots of enhancements to the Apache.pm emulation when using the + CGIHandler module. Implemented by David Wheeler. + - The fact that autohandlers or dhandlers can be turned off by setting + autohandler_name or dhandler_name to "" has now been documented, and + we explicitly check for this in the code. Task id #499. + - The ApacheHandler module now handles certain exceptions + (TopLevelNotFound, Abort, Decline) thrown from the Interp class's + make_request method by returning the desired error code. With the + default Mason Interp & Request classes, this will never happen. + However, subclasses may want to throw exceptions when constructing a + request. Implemented by David Wheeler. + + [ BUG FIXES ] + + - If any code type parameters were set in the httpd.conf file, Mason + died trying to read them. This bug was introduced in version 1.20. + Task id #496. Reported by David Wheeler. + - $m->caller, $m->callers and $m->caller_args now return undef or an + empty list instead of crashing when the specified stack level does not + exist. Task id #495. Reported by Bernhard Schmalhofer. + - The busy_lock option to $m->cache->get did not accept did not accept + string values for durations, like "4m". Task id #484. Reported by + Igor Muratov. + - When generating the HTML error message page, we now only use basic + HTML escaping. This fixes two problems. One is that if + HTML::Entities is not installed, using the "|h" escape flag in the + error display component causes an endless loop. The other is that the + "|h" flag can mangle non-Latin-1 characters. Task ids #497 and #494. + Reported by Harmen and Oleg Bartunov respectively. + - If a component generated output, then called another component via + $m->scomp, and that other component attempted to clear the buffer and + then abort, any output generated before the call to $m->scomp was + still sent to the client. This broke calling $m->redirect inside an + $m->scomp call. Task id #498. Reported by Kim Alexander Hansen. 1.22 July 14, 2003 -[ ENHANCEMENTS ] - -- Added $m->has_content to check for content without evaluating it. -- Comments are now allowed on separate lines inside <%attr> and -<%flags> blocks. Task id #475. -- $m->subexec and $m->make_subrequest now accept relative paths which -are interpreted relative to the current component directory, like -$m->comp. -- Documented potential problems if call to $m->redirect is trapped in -an eval block, and then output is generated before the exception is -rethrown. Task id #477. - -[ BUG FIXES ] - -- If a component with a filter section called abort, the filter was -run twice. Task id #473. -- If an exception was thrown when creating a request, memory was -leaked. This can happen when the top-level component cannot be -found (e.g. 404) or if there is an error in compiling the top-level -component. Task id #478. Reported by Doug Treder. -- Removed the use of alarm() and SIG{ALRM} to trap rare infinite loops -inside the compilation of components. It interfered with Mason -environments that use alarm() for their own purposes, and the -associated test would crash in certain Perl environments. If you find -that Mason sometimes enters an infinite loop, see the -"Hanging Processes: Detection and Diagnostics" section of the mod_perl -guide for hints on diagnosing the problem. Task id #472. -- Mason allowed a component to define two subcomponents or methods -with the same name. Task id #476. Reported by John Michael Mars. - + [ ENHANCEMENTS ] + + - Added $m->has_content to check for content without evaluating it. + - Comments are now allowed on separate lines inside <%attr> and + <%flags> blocks. Task id #475. + - $m->subexec and $m->make_subrequest now accept relative paths which + are interpreted relative to the current component directory, like + $m->comp. + - Documented potential problems if call to $m->redirect is trapped in + an eval block, and then output is generated before the exception is + rethrown. Task id #477. + + [ BUG FIXES ] + + - If a component with a filter section called abort, the filter was + run twice. Task id #473. + - If an exception was thrown when creating a request, memory was + leaked. This can happen when the top-level component cannot be + found (e.g. 404) or if there is an error in compiling the top-level + component. Task id #478. Reported by Doug Treder. + - Removed the use of alarm() and SIG{ALRM} to trap rare infinite loops + inside the compilation of components. It interfered with Mason + environments that use alarm() for their own purposes, and the + associated test would crash in certain Perl environments. If you find + that Mason sometimes enters an infinite loop, see the + "Hanging Processes: Detection and Diagnostics" section of the mod_perl + guide for hints on diagnosing the problem. Task id #472. + - Mason allowed a component to define two subcomponents or methods + with the same name. Task id #476. Reported by John Michael Mars. 1.21 June 4, 2003 -[ INCOMPATIBLE CHANGES ] - -- ** The semantics of @_ for components now match Perl subroutines: @_ -contains aliases to the caller's arguments, instead of copies. For -example, if a component updates $_[0], the corresponding argument is -updated (or an error occurs if it is not updatable). The only users -that will notice this are those that update elements of @_ in -components and do not expect those changes to affect the caller. If -you have any doubts, grep your component tree for '\$_\[' and look for -assignment statements. - -[ ENHANCEMENTS ] - -- Cache the result of taint_is_on() for performance. -- Mason was copying arguments several times for a request, and several -more times for each component call. The unnecessary copies have been -eliminated. As part of eliminating these copies, a new compiler -parameter has been added, "define_args_hash". The default setting, -"auto", should work with all existing Mason components. See the -HTML::Mason::Compiler::ToObject docs for details. Task id #464. -Suggested by Doug Treder. -- Added more details about subclassing the compiler to the Subclassing -documentation. -- There is now a compiler parameter called "use_source_line_numbers", -which can be used to turn off line numbering based on the source file. -This can be useful when single stepping a component through the -debugger. Task id #461. - -[ BUG FIXES ] - -- Fixed a serious error in which a Compiler that was used on a -component containing certain kinds of syntax errors would claim that -any future components also contained syntax errors. Task id #467. -- Now assigning runtime properties (such as interp) to method -component objects as well as subcomponent objects. Task id #462. -- Fixed the HTML error display. Errors were not being properly -HTML-escaped. Task id #468. Reported by Jeremy Blain. -- A bad interaction between the XS version of Params::Validate, Perl -5.00503 and taint mode has been "fixed" by requiring Params::Validate -0.59, where the problem is fixed. Task id #470. -- The test suite now runs the taint mode tests with earlier versions -of Perl. Task id #471. -- The ApacheHandler module would go into an infinite memory-eating -loop when run in taint mode with Perl 5.6.1. Task id #469. Reported -by William McKee. - + [ INCOMPATIBLE CHANGES ] + + - ** The semantics of @_ for components now match Perl subroutines: @_ + contains aliases to the caller's arguments, instead of copies. For + example, if a component updates $_[0], the corresponding argument is + updated (or an error occurs if it is not updatable). The only users + that will notice this are those that update elements of @_ in + components and do not expect those changes to affect the caller. If + you have any doubts, grep your component tree for '\$_\[' and look for + assignment statements. + + [ ENHANCEMENTS ] + + - Cache the result of taint_is_on() for performance. + - Mason was copying arguments several times for a request, and several + more times for each component call. The unnecessary copies have been + eliminated. As part of eliminating these copies, a new compiler + parameter has been added, "define_args_hash". The default setting, + "auto", should work with all existing Mason components. See the + HTML::Mason::Compiler::ToObject docs for details. Task id #464. + Suggested by Doug Treder. + - Added more details about subclassing the compiler to the Subclassing + documentation. + - There is now a compiler parameter called "use_source_line_numbers", + which can be used to turn off line numbering based on the source file. + This can be useful when single stepping a component through the + debugger. Task id #461. + + [ BUG FIXES ] + + - Fixed a serious error in which a Compiler that was used on a + component containing certain kinds of syntax errors would claim that + any future components also contained syntax errors. Task id #467. + - Now assigning runtime properties (such as interp) to method + component objects as well as subcomponent objects. Task id #462. + - Fixed the HTML error display. Errors were not being properly + HTML-escaped. Task id #468. Reported by Jeremy Blain. + - A bad interaction between the XS version of Params::Validate, Perl + 5.00503 and taint mode has been "fixed" by requiring Params::Validate + 0.59, where the problem is fixed. Task id #470. + - The test suite now runs the taint mode tests with earlier versions + of Perl. Task id #471. + - The ApacheHandler module would go into an infinite memory-eating + loop when run in taint mode with Perl 5.6.1. Task id #469. Reported + by William McKee. 1.20 May 1, 2003 (May Day) -[ ENHANCEMENTS ] - -- Added an $m->notes() method, which is similar to $r->pnotes() but -may be used outside a mod_perl environment. Task id #449. -- Mason will now only convert non-reference exceptions to -HTML::Mason::Exception objects, so it should cooperate better with -modules like Error.pm. Task id #446. -- Added more documentation on Mason's error handling and exception -system. Task id #446. -- If Mason was configured via the Apache httpd.conf file, it could in -many cases be quite a bit slower than configuration via a custom -handler subroutine. Now configuration via the httpd.conf is much -faster, and is only about 5% slower than a custom handler subroutine. -Reported by Jeremy Blain. -- Mason's test harness now gives verbose output when the TEST_VERBOSE -environment variable is true. This eliminates the need for setting -MASON_VERBOSE. -- ** It is now an error to have a subcomponent and method with the -same name in a single component. - -[ BUG FIXES ] - -- Mason would die if asked to compile a component that evaluates -to a false value. Task id #444. Reported by David Wheeler. -- Mason now gives a better error message if you try to call a -component's methods or subcomponents from its <%shared> block. Task -id #448. Reported by Randy Harmon. -- If in_package was set, Mason would die if output was generated after -a subrequest. Task id #453. Reported by David R. Baird. -- If Perl's print() was called after a subrequest, Mason would die -when run with any Perl before 5.8.0. Task id #458. -- If a component called $m->cache_self, and then $m->decline, no -output would be generated. Task id #454. Patch by Vadim Ustiansky. - + [ ENHANCEMENTS ] + + - Added an $m->notes() method, which is similar to $r->pnotes() but + may be used outside a mod_perl environment. Task id #449. + - Mason will now only convert non-reference exceptions to + HTML::Mason::Exception objects, so it should cooperate better with + modules like Error.pm. Task id #446. + - Added more documentation on Mason's error handling and exception + system. Task id #446. + - If Mason was configured via the Apache httpd.conf file, it could in + many cases be quite a bit slower than configuration via a custom + handler subroutine. Now configuration via the httpd.conf is much + faster, and is only about 5% slower than a custom handler subroutine. + Reported by Jeremy Blain. + - Mason's test harness now gives verbose output when the TEST_VERBOSE + environment variable is true. This eliminates the need for setting + MASON_VERBOSE. + - ** It is now an error to have a subcomponent and method with the + same name in a single component. + + [ BUG FIXES ] + + - Mason would die if asked to compile a component that evaluates + to a false value. Task id #444. Reported by David Wheeler. + - Mason now gives a better error message if you try to call a + component's methods or subcomponents from its <%shared> block. Task + id #448. Reported by Randy Harmon. + - If in_package was set, Mason would die if output was generated after + a subrequest. Task id #453. Reported by David R. Baird. + - If Perl's print() was called after a subrequest, Mason would die + when run with any Perl before 5.8.0. Task id #458. + - If a component called $m->cache_self, and then $m->decline, no + output would be generated. Task id #454. Patch by Vadim Ustiansky. 1.19 March 3, 2003 -[ BUG FIXES ] - -- Fixed a very nasty bug that could cause subcomponents or methods -from one component to show up in another components. Task id #443 in -todo list. -- If the closing tag of a <%flags>, <%attr>, or <%args> block -contained upper case characters, the component would not be parsed -properly. Reported by Chris Snyder. Task id #440 in -todo list. -- Providing a Resolver object directly to the ApacheHandler -constructor caused a fatal error. Reported by Kwindla Kramer. Task -id #441 in todo list. + [ BUG FIXES ] + - Fixed a very nasty bug that could cause subcomponents or methods + from one component to show up in another components. Task id #443 in + todo list. + - If the closing tag of a <%flags>, <%attr>, or <%args> block + contained upper case characters, the component would not be parsed + properly. Reported by Chris Snyder. Task id #440 in + todo list. + - Providing a Resolver object directly to the ApacheHandler + constructor caused a fatal error. Reported by Kwindla Kramer. Task + id #441 in todo list. 1.18 January 24, 2003 -[ BUG FIXES ] - -- Require Exception::Class 1.09. Version 1.08 has a bug that causes -problems with Mason when used with any Perl earlier than 5.8.0. -- Fix a bug in the lexer code that caused Mason to not work with Perl -5.00503 at all. + [ BUG FIXES ] + - Require Exception::Class 1.09. Version 1.08 has a bug that causes + problems with Mason when used with any Perl earlier than 5.8.0. + - Fix a bug in the lexer code that caused Mason to not work with Perl + 5.00503 at all. 1.17 January 17, 2003 -[ ENHANCEMENTS ] - -- Added "REQUEST:" as a component specifier for method comp calls, -similar to "SELF:" and "PARENT:". "REQUEST:" is short-hand for -$m->request_comp. Suggested by Manuel Capinha, among others. -- Added $m->call_self. This was present in Mason pre-1.10, and has -been added back per Jon Swartz's request. -- Added $comp->attributes, similar to $comp->methods. This just -returns attributes for a given component object. It doesn't return -attributes inherited from a parent. Suggested by Matti Makitalo. - -[ BUG FIXES ] - -- ** When $m->cache_self was used for a component with a filter block, -the output would be cached _before_ filtering, and filtered every time -it was retrieved from the cache. This has been fixed, and the -documentation now specifies that the filtered output is cached. -- Fixed failure of 12-taint.t #7 on Win32 boxes. Reported by Randy -Kobes. -- Without HTML::Entities installed, 13-errors.t #7 failed. Reported -by Sam Kington. -- $m->file did not handle relative paths properly when called from a -subcomponent or method. Reported by Chris Hutchinson. -- If $m->abort was called in the shared block of a component that had -a filter, then a fatal error occured. Reported by Chris Pudney. -- Mason was not cooperating with Apache::Filter, and attempts to -filter Mason's output did not work. Fixing this also requires -Apache::Filter 1.021, if you are using Apache::Request to handling -incoming arguments. Reported by by Manuel Capinha. -- Mason assumed that if Scalar::Util loaded without errors, it had a -weaken() subroutine. However, Scalar::Util provides a pure Perl -implementation that does not include this subroutine. Now we check -for this subroutine explicitly. Reported by Autrijus Tang. -- Some code constructs, such as qw() lists, would end up being turned -into invalid code during component compilation. Reported by Robert -Landrum. -- Subclassing a subclass of HTML::Mason::Request broke when the class -between HTML::Mason::Request and your own class called -alter_superclass. -- Under mod_perl 2.0, when ApacheHandler could't resolve a filename to -a component, it would die instead of returning a not found status. - -[ INCOMPATIBLE CHANGES ] - -- ** Removed the long deprecated and undocumented $comp->parent_comp -method. Use $comp->owner instead. - + [ ENHANCEMENTS ] + + - Added "REQUEST:" as a component specifier for method comp calls, + similar to "SELF:" and "PARENT:". "REQUEST:" is short-hand for + $m->request_comp. Suggested by Manuel Capinha, among others. + - Added $m->call_self. This was present in Mason pre-1.10, and has + been added back per Jon Swartz's request. + - Added $comp->attributes, similar to $comp->methods. This just + returns attributes for a given component object. It doesn't return + attributes inherited from a parent. Suggested by Matti Makitalo. + + [ BUG FIXES ] + + - ** When $m->cache_self was used for a component with a filter block, + the output would be cached _before_ filtering, and filtered every time + it was retrieved from the cache. This has been fixed, and the + documentation now specifies that the filtered output is cached. + - Fixed failure of 12-taint.t #7 on Win32 boxes. Reported by Randy + Kobes. + - Without HTML::Entities installed, 13-errors.t #7 failed. Reported + by Sam Kington. + - $m->file did not handle relative paths properly when called from a + subcomponent or method. Reported by Chris Hutchinson. + - If $m->abort was called in the shared block of a component that had + a filter, then a fatal error occured. Reported by Chris Pudney. + - Mason was not cooperating with Apache::Filter, and attempts to + filter Mason's output did not work. Fixing this also requires + Apache::Filter 1.021, if you are using Apache::Request to handling + incoming arguments. Reported by by Manuel Capinha. + - Mason assumed that if Scalar::Util loaded without errors, it had a + weaken() subroutine. However, Scalar::Util provides a pure Perl + implementation that does not include this subroutine. Now we check + for this subroutine explicitly. Reported by Autrijus Tang. + - Some code constructs, such as qw() lists, would end up being turned + into invalid code during component compilation. Reported by Robert + Landrum. + - Subclassing a subclass of HTML::Mason::Request broke when the class + between HTML::Mason::Request and your own class called + alter_superclass. + - Under mod_perl 2.0, when ApacheHandler could't resolve a filename to + a component, it would die instead of returning a not found status. + + [ INCOMPATIBLE CHANGES ] + + - ** Removed the long deprecated and undocumented $comp->parent_comp + method. Use $comp->owner instead. 1.16 December 13, 2002 -[ ENHANCEMENTS ] - -- Documented behavior of $m->flush_buffer when a filter is present. -- Turned off "nowrap" for error message on HTML error page. No more -horizontal scrolling! -- Substantially rewrote portions of the Admin Guide, in order to -improve and clarify the portions related to configuring and -customizing Mason under mod_perl. -- Added back "raw error" on HTML error page. -- Replaced FilesMatch with LocationMatch in docs and FAQ, because -using FilesMatch means you can't use dhandlers. -- Reduced memory usage when compiling large components. Memory usage -for smaller components hasn't changed much, but they weren't really a -problem in the first place. -- Added a cgi_request method to the CGIHandler::Request object, which -parallels the apache_req method offered by the ApacheHandler::Request -object. - -[ BUG FIXES ] - -- When using the code cache within an Interp, a circular reference was -created which prevented the Interp object from ever being destroyed. -With Perl 5.6.0+, this will be automatically prevented by using weak -references as needed. With Perl 5.00503, you will need to call the -new Interp->flush_code_cache method in order to break the circular -reference. This bug could cause memory leaks with code that created -new Interp objects over time, though most uses of Mason do not do -this. Reported by Kate Porter. -- Fixed bad parsing of <% $foo || 50 %>. Mason was interpreting this -as an escape flag. Escape flags now much match /^[[:alpha:]_]\w+/ and -Mason specifically looks for || in a substitution as well. Reported -by Kwindla Kramer. -- If a dhandler one subdirectory down (like /foo/dhandler) called -$m->decline, Mason threw a bogus exception. Fixed by Harmen. -- Running the test suite caused an error in the shell on Win32 with -newer versions of MakeMaker. Reported by Murat Unalan. (We _think_ -this is fixed but we'd like confirmation from a Win32 user). -- It was not possible to set the data_cache_defaults parameter from -the httpd.conf file. Now it is. -- Mason was using Apache::Request->new instead of -Apache::Request->instance. This meant that if you had a handler that -ran earlier (like a TransHandler) and that handler created an -Apache::Request object, then the one Mason created would be missing -any POST arguments. Reported by Ray Zimmerman. -- Several different places in the docs said that Cache::Cache accepts -a username option, but there is no such thing. -- alter_superclass didn't work with CGIHandler because CGIHandler -didn't define a $VERSION variable. Reported by Nadine and Harry -Laxen. -- Made CGIHandler merge together POST and query string arguments in -order to be consistent with ApacheHandler. Reported by Nadine and Harry -Laxen. -- The CGIHandler module was overriding any out_method provided by the -user. Reported by Nadine and Harry Laxen. - + [ ENHANCEMENTS ] + + - Documented behavior of $m->flush_buffer when a filter is present. + - Turned off "nowrap" for error message on HTML error page. No more + horizontal scrolling! + - Substantially rewrote portions of the Admin Guide, in order to + improve and clarify the portions related to configuring and + customizing Mason under mod_perl. + - Added back "raw error" on HTML error page. + - Replaced FilesMatch with LocationMatch in docs and FAQ, because + using FilesMatch means you can't use dhandlers. + - Reduced memory usage when compiling large components. Memory usage + for smaller components hasn't changed much, but they weren't really a + problem in the first place. + - Added a cgi_request method to the CGIHandler::Request object, which + parallels the apache_req method offered by the ApacheHandler::Request + object. + + [ BUG FIXES ] + + - When using the code cache within an Interp, a circular reference was + created which prevented the Interp object from ever being destroyed. + With Perl 5.6.0+, this will be automatically prevented by using weak + references as needed. With Perl 5.00503, you will need to call the + new Interp->flush_code_cache method in order to break the circular + reference. This bug could cause memory leaks with code that created + new Interp objects over time, though most uses of Mason do not do + this. Reported by Kate Porter. + - Fixed bad parsing of <% $foo || 50 %>. Mason was interpreting this + as an escape flag. Escape flags now much match /^[[:alpha:]_]\w+/ and + Mason specifically looks for || in a substitution as well. Reported + by Kwindla Kramer. + - If a dhandler one subdirectory down (like /foo/dhandler) called + $m->decline, Mason threw a bogus exception. Fixed by Harmen. + - Running the test suite caused an error in the shell on Win32 with + newer versions of MakeMaker. Reported by Murat Unalan. (We _think_ + this is fixed but we'd like confirmation from a Win32 user). + - It was not possible to set the data_cache_defaults parameter from + the httpd.conf file. Now it is. + - Mason was using Apache::Request->new instead of + Apache::Request->instance. This meant that if you had a handler that + ran earlier (like a TransHandler) and that handler created an + Apache::Request object, then the one Mason created would be missing + any POST arguments. Reported by Ray Zimmerman. + - Several different places in the docs said that Cache::Cache accepts + a username option, but there is no such thing. + - alter_superclass didn't work with CGIHandler because CGIHandler + didn't define a $VERSION variable. Reported by Nadine and Harry + Laxen. + - Made CGIHandler merge together POST and query string arguments in + order to be consistent with ApacheHandler. Reported by Nadine and Harry + Laxen. + - The CGIHandler module was overriding any out_method provided by the + user. Reported by Nadine and Harry Laxen. 1.15 October 14, 2002 -[ BUG FIXES ] - -- Fixed a number of problems with filters: --- They didn't see changes made to %ARGS (they were seeing a copy). --- They couldn't see any variables declared in <%args> blocks. --- The presence of a filter caused a call to $m->flush_buffer, -breaking redirects. -- Added a number of tests for filters (*cough*). -- Fixed broken links and other bugs in the POD and HTML versions of -the docs. -- Fixed test failures when running as root. These failures were not -reflective of bugs in Mason, simply problems in the tests or test -setup. Now we skip the tests for end user installs (we still run them -during development, never fear). -- HTML::Mason::Request contained code that caused an error when using -the CPAN shell's "r" command. + [ BUG FIXES ] + + - Fixed a number of problems with filters: + -- They didn't see changes made to %ARGS (they were seeing a copy). + -- They couldn't see any variables declared in <%args> blocks. + -- The presence of a filter caused a call to $m->flush_buffer, + breaking redirects. + - Added a number of tests for filters (*cough*). + - Fixed broken links and other bugs in the POD and HTML versions of + the docs. + - Fixed test failures when running as root. These failures were not + reflective of bugs in Mason, simply problems in the tests or test + setup. Now we skip the tests for end user installs (we still run them + during development, never fear). + - HTML::Mason::Request contained code that caused an error when using + the CPAN shell's "r" command. 1.14 October 7, 2002 -[ BACKWARDS COMPATIBILITY ] - -- Added compatibility layer for 1.0x cache API. It is now possible to -use $m->cache and $m->cache_self in the old way by setting the -data_cache_api parameter to '1.0'. L{Params/data_cache_api} -- Added back $comp->create_time, which was renamed as $comp->load_time -in 1.09_02, as a deprecated method. -- Added back $interp->time and $m->current_time, which were removed in -1.09_01, as deprecated methods. - -[ ENHANCEMENTS ] - -- Implemented the long requested user-defined escapes feature. It is -now possible to define your own escape flags, as well as overriding -Mason's own 'h' and 'u' flags. L{Devel/Escaping expressions} -- Implemented expire_if and busy_lock options in new $m->cache->get -API. These retain the essence of the 1.0x options although both -work a little differently. L{Devel/Data Caching} -- Added new module to implement caching extensions, -HTML::Mason::Cache::BaseCache, with accompanying documentation. -- Enhanced Params.pod with TOC and full descriptions of all -parameters. Standardized rest of documentation to link to Params.pod -when referring to a parameter. -- When a component path is not found, but that path matches a file on -disk, we now print an extra warning, because this indicates that the -user does not understand the distinction between component paths and -filesystem paths. -- The Request object's redirect() method now accepts an optional -additional argument, allowing users to use a status code other than -302 for the redirect. -- Mason should now work on a box with a fresh mod_perl 2/Apache 2 -install. Previously, Mason unconditionally tried to load -Apache::Status, which comes with mod_perl 1.x, but not (yet?) with -mod_perl 2. - -[ BUG FIXES ] - -- Installation was failing when Exception::Class wasn't installed. -- Calling <%def> subcomponents no longer changes base_comp, which is -important in autohandlers. (reported by Ian Robertson) -- The documentation incorrectly indicated that you could create an -ApacheHandler object during server startup without providing a -component root. This will also shown incorrectly in the sample -handler.pl in the eg/ directory. -- Reduced Mason's memory usage when compiling and serving components. -This is particularly noticeable with very large components (1-2MB or -greater). Work on this will continue for future versions. (reported -by Todd Holbrook) -- %ARGS and <%shared> variables could not be accessed from <%filter>. -(reported by Adam Roth) -- Switch.pm did not work in file-based components. (reported by Gert -Thiel) -- use_strict could not be turned off. (reported by Viacheslav -Voytovich) -- $m->clear_buffer (and $m->redirect) did not work inside a component -call with content. (reported by Manuel Capinha) -- Some tests were failing on Windows, because they assumed Unix style -filesystem paths. This was a problem with the tests, not the core -code, but still worth fixing. (reported by Adam Rinehart). -- $m->caller() was inadvertently left out of the documentation - fixed. -- Fixed a small documentation error about what kinds of things are -valid keys in <%flags> and <%attr> blocks. -- Configuring multiple component roots via the httpd.conf file failed -silently (as opposed to releases 1.10 - 1.12, where this failed with -an error). -- Unreadable component source files caused the confusing error message -"source callback returned no source". This will now throw a much more -helpful exception. -- Errors occuring in subrequests would cause error output to be mixed -with regular output when the error_mode was "output" (the default with -ApacheHandler and CGIHandler). Errors in subrequests should now look -the same as errors in the top request. + [ BACKWARDS COMPATIBILITY ] + + - Added compatibility layer for 1.0x cache API. It is now possible to + use $m->cache and $m->cache_self in the old way by setting the + data_cache_api parameter to '1.0'. + - Added back $comp->create_time, which was renamed as $comp->load_time + in 1.09_02, as a deprecated method. + - Added back $interp->time and $m->current_time, which were removed in + 1.09_01, as deprecated methods. + + [ ENHANCEMENTS ] + + - Implemented the long requested user-defined escapes feature. It is + now possible to define your own escape flags, as well as overriding + Mason's own 'h' and 'u' flags. + - Implemented expire_if and busy_lock options in new $m->cache->get + API. These retain the essence of the 1.0x options although both + work a little differently. + - Added new module to implement caching extensions, + HTML::Mason::Cache::BaseCache, with accompanying documentation. + - Enhanced Params.pod with TOC and full descriptions of all + parameters. Standardized rest of documentation to link to Params.pod + when referring to a parameter. + - When a component path is not found, but that path matches a file on + disk, we now print an extra warning, because this indicates that the + user does not understand the distinction between component paths and + filesystem paths. + - The Request object's redirect() method now accepts an optional + additional argument, allowing users to use a status code other than + 302 for the redirect. + - Mason should now work on a box with a fresh mod_perl 2/Apache 2 + install. Previously, Mason unconditionally tried to load + Apache::Status, which comes with mod_perl 1.x, but not (yet?) with + mod_perl 2. + + [ BUG FIXES ] + + - Installation was failing when Exception::Class wasn't installed. + - Calling <%def> subcomponents no longer changes base_comp, which is + important in autohandlers. (reported by Ian Robertson) + - The documentation incorrectly indicated that you could create an + ApacheHandler object during server startup without providing a + component root. This will also shown incorrectly in the sample + handler.pl in the eg/ directory. + - Reduced Mason's memory usage when compiling and serving components. + This is particularly noticeable with very large components (1-2MB or + greater). Work on this will continue for future versions. (reported + by Todd Holbrook) + - %ARGS and <%shared> variables could not be accessed from <%filter>. + (reported by Adam Roth) + - Switch.pm did not work in file-based components. (reported by Gert + Thiel) + - use_strict could not be turned off. (reported by Viacheslav + Voytovich) + - $m->clear_buffer (and $m->redirect) did not work inside a component + call with content. (reported by Manuel Capinha) + - Some tests were failing on Windows, because they assumed Unix style + filesystem paths. This was a problem with the tests, not the core + code, but still worth fixing. (reported by Adam Rinehart). + - $m->caller() was inadvertently left out of the documentation - fixed. + - Fixed a small documentation error about what kinds of things are + valid keys in <%flags> and <%attr> blocks. + - Configuring multiple component roots via the httpd.conf file failed + silently (as opposed to releases 1.10 - 1.12, where this failed with + an error). + - Unreadable component source files caused the confusing error message + "source callback returned no source". This will now throw a much more + helpful exception. + - Errors occuring in subrequests would cause error output to be mixed + with regular output when the error_mode was "output" (the default with + ApacheHandler and CGIHandler). Errors in subrequests should now look + the same as errors in the top request. 1.13 August 26, 2002 (Taiwan time) -[ ENHANCEMENTS ] - -- Replace the regex "[A-Za-z0-9]" with "\w", which should cooperate -better with Unicode. -- Added a section called "Avoiding Concurrent Recomputations" to the -Developer's Manual. This describes how to achieve the same effect as -was provided by the "busy locks" feature in 1.0x. L{Devel/Avoiding -Concurrent Recomputations} - -[ BUG FIXES ] - -- When running under mod_perl, a warning was issued from -HTML::Mason::Request::ApacheHandler's exec() method. (reported by -Marius Feraru) -- The request wrapper code did not work with anonymous component. -(reported by Bob McElrath) -- Mason 1.10-1.12 did not cooperate with Apache::Filter, or any other -Apache subclass that overrode the print() method. (reported by Mark -Moseley) -- If an object blessed into Apache::Request was provided to -ApacheHandler's handle_request method, and you were using the -args_method parameter was set to "mod_perl" (the default), then -ApacheHandler would die. This was a bug introduced in 1.12 as a -result of fixing the memory leaks in 1.11. (reported by Autrijus -Tang) -- Configuring multiple component roots via the httpd.conf file failed. -(reported and patched by Alexei V. Barantsev) -- $interp->exec and $m->exec were not respecting wantarray. (reported -by David Bushong) -- Suppress a "subroutine redefined" warning from -HTML::Mason::Request::Apachehandler's exec() method. (reported by -Marius Feraru) -- Combining cache_self, <%filter> blocks, and $m->scomp did not work. -(reported by Calle Dybedahl) -- Tests 4 & 5 for 06-compiler.t would fail if HTML::Entities was not -installed. Now they will be skipped if necessary. -- Tests 75 & 99 for 08-ah.t depended on hash key ordering and would -fail with Perl 5.8.0. (submitted by Michael Gray) -- Fixed a number of cases where the lexer/compiler's behavior differed -from Mason 1.05 in unintended ways. --- Dashes were not being allowed in subcomponent and method names, -even though this is documented as being allowed. (reported by Ken -Miller) --- Space between a method or subcomponent name and the '>' at the end -of the tag was not being allowed. It should be noted that this is not -documented as being allowed in the docs, and so may change in the -future. But for now, we'd rather be compatible with 1.05. (reported -by Chris Hutchinson) --- Comments were not being allowed after flag and attribute -assignments. Again, this is not documented as being allowed. -(reported by Chris Hutchinson) -- CPAN thought that version 1.68 of HTML::Mason::ApacheHandler (part -of the 1.05 release), was newer than version 1.242 (part of the 1.1201 -release). This is what we get for using CVS to set verson numbers. -This version number is now set by hand in order to make sure that this -does not happen in the future. - + [ ENHANCEMENTS ] + + - Replace the regex "[A-Za-z0-9]" with "\w", which should cooperate + better with Unicode. + - Added a section called "Avoiding Concurrent Recomputations" to the + Developer's Manual. This describes how to achieve the same effect as + was provided by the "busy locks" feature in 1.0x. + [ BUG FIXES ] + + - When running under mod_perl, a warning was issued from + HTML::Mason::Request::ApacheHandler's exec() method. (reported by + Marius Feraru) + - The request wrapper code did not work with anonymous component. + (reported by Bob McElrath) + - Mason 1.10-1.12 did not cooperate with Apache::Filter, or any other + Apache subclass that overrode the print() method. (reported by Mark + Moseley) + - If an object blessed into Apache::Request was provided to + ApacheHandler's handle_request method, and you were using the + args_method parameter was set to "mod_perl" (the default), then + ApacheHandler would die. This was a bug introduced in 1.12 as a + result of fixing the memory leaks in 1.11. (reported by Autrijus + Tang) + - Configuring multiple component roots via the httpd.conf file failed. + (reported and patched by Alexei V. Barantsev) + - $interp->exec and $m->exec were not respecting wantarray. (reported + by David Bushong) + - Suppress a "subroutine redefined" warning from + HTML::Mason::Request::Apachehandler's exec() method. (reported by + Marius Feraru) + - Combining cache_self, <%filter> blocks, and $m->scomp did not work. + (reported by Calle Dybedahl) + - Tests 4 & 5 for 06-compiler.t would fail if HTML::Entities was not + installed. Now they will be skipped if necessary. + - Tests 75 & 99 for 08-ah.t depended on hash key ordering and would + fail with Perl 5.8.0. (submitted by Michael Gray) + - Fixed a number of cases where the lexer/compiler's behavior differed + from Mason 1.05 in unintended ways. + -- Dashes were not being allowed in subcomponent and method names, + even though this is documented as being allowed. (reported by Ken + Miller) + -- Space between a method or subcomponent name and the '>' at the end + of the tag was not being allowed. It should be noted that this is not + documented as being allowed in the docs, and so may change in the + future. But for now, we'd rather be compatible with 1.05. (reported + by Chris Hutchinson) + -- Comments were not being allowed after flag and attribute + assignments. Again, this is not documented as being allowed. + (reported by Chris Hutchinson) + - CPAN thought that version 1.68 of HTML::Mason::ApacheHandler (part + of the 1.05 release), was newer than version 1.242 (part of the 1.1201 + release). This is what we get for using CVS to set verson numbers. + This version number is now set by hand in order to make sure that this + does not happen in the future. 1.1201 July 24, 2002 -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- Added details to the UPGRADE document on what has changed with the -caching system. -- Added some documentation on how to arbitrarily expire items in the -cache with the new caching system. This is in HTML::Mason::Devel. + - Added details to the UPGRADE document on what has changed with the + caching system. + - Added some documentation on how to arbitrarily expire items in the + cache with the new caching system. This is in HTML::Mason::Devel. -[ BUG FIXES ] + [ BUG FIXES ] -- Fixed a compilation error in HTML::Mason::Tools that was occuring -with Perl 5.00503. -- Made sure that <%method> and <%def> tags are treated -case-insensitively. + - Fixed a compilation error in HTML::Mason::Tools that was occuring + with Perl 5.00503. + - Made sure that <%method> and <%def> tags are treated + case-insensitively. 1.12 July 23, 2002 -[ ENHANCEMENTS ] + [ ENHANCEMENTS ] -- Various optimizations have been added to this release in order to -address the fact that Mason 1.11 is quite a bit slower than 1.05. One -major factor was optimizing Params::Validate and Class::Container, so -for that reason this version of Mason requires Params::Validate 0.24 -and Class::Container 0.07. With these modules installed, this release -shows improvements of up to 50-60% in benchmarks that stress Mason's -weaknesses, with other benchmarks showing up to a 100% improvement. -- Made subclassing CGIHandler more useful by breaking out its arg -processing into a request_args method, just like ApacheHandler. -- Added alter_superclass method to Request class, for use by Request -subclasses. See the HTML::Mason::Subclassing document for details. + - Various optimizations have been added to this release in order to + address the fact that Mason 1.11 is quite a bit slower than 1.05. One + major factor was optimizing Params::Validate and Class::Container, so + for that reason this version of Mason requires Params::Validate 0.24 + and Class::Container 0.07. With these modules installed, this release + shows improvements of up to 50-60% in benchmarks that stress Mason's + weaknesses, with other benchmarks showing up to a 100% improvement. + - Made subclassing CGIHandler more useful by breaking out its arg + processing into a request_args method, just like ApacheHandler. + - Added alter_superclass method to Request class, for use by Request + subclasses. See the HTML::Mason::Subclassing document for details. -[ BUG FIXES ] - -- Fix HTML generated for error messages so that tags balance out. -Unbalanced table tags caused this page to not display properly with -Netscape 4.x. -- Fix nasty memory leaks in ApacheHandler. + [ BUG FIXES ] + - Fix HTML generated for error messages so that tags balance out. + Unbalanced table tags caused this page to not display properly with + Netscape 4.x. + - Fix nasty memory leaks in ApacheHandler. 1.11 July 3, 2002 -[ BUG FIXES ] - -- The 08-ah.t tests failed with a runtime error if run by root. This -was not a Mason bug, but a bug in the test code itself. -- ApacheHandler did not work Perl 5.005. -- Even if ApacheHandler was given an Apache::Request object to -handle_request() or prepare_request(), it was still calling -Apache::Request->new. (reported by Ray Zimmerman) -- Fixed incorrect $m->make_subrequest documentation. (reported by Ray -Zimmerman) -- Added some incompatibilities in 1.10 to the UPGRADE document that -were left out in previous versions. -- HTML error output could be sent as plain text or some other content -type depending on your Apache config and the file extension of the -requested component. Now we explicitly set $r->content_type before -sending HTML error output. -- Fix failures of Resolver::File::glob_path() with Win32. (reported -by Adam Reinhart) - + [ BUG FIXES ] + + - The 08-ah.t tests failed with a runtime error if run by root. This + was not a Mason bug, but a bug in the test code itself. + - ApacheHandler did not work Perl 5.005. + - Even if ApacheHandler was given an Apache::Request object to + handle_request() or prepare_request(), it was still calling + Apache::Request->new. (reported by Ray Zimmerman) + - Fixed incorrect $m->make_subrequest documentation. (reported by Ray + Zimmerman) + - Added some incompatibilities in 1.10 to the UPGRADE document that + were left out in previous versions. + - HTML error output could be sent as plain text or some other content + type depending on your Apache config and the file extension of the + requested component. Now we explicitly set $r->content_type before + sending HTML error output. + - Fix failures of Resolver::File::glob_path() with Win32. (reported + by Adam Reinhart) 1.10 June 25, 2002 -This is a big release and there are a number of backwards -incompatibilities with version 1.05 and earlier. Please make sure to -read the UPGRADE document, which covers these in more detail. - -[ ENHANCEMENTS ] - -- Mason can always detect when an object file was compiled with an -incompatible compiler/lexer, even if the object file contains syntax -errors. -- Method and subcomponent blocks with no name (<%method>) were caught -as an error, but the error message was very confusing. This has been -fixed. -- Added HTML::Mason::Subclassing, documentation on subclassing Mason -objects. -- Added documentation on the interaction between <%once> sections and -preloading components. -- Mason automatically calls $m->clear_buffer when $m->decline is -called. - -[ BUG FIXES ] - -- Fixed a bug in the lexer that made it think it had found a Perl-line -where none existed. -- Fixed a bug related to handling of parameters in httpd.conf files. -This was only noticeable if you attempted to provide a subclass of one -of Mason's classes (like your own Request class) that took its own -parameters. Mason was not recognizing those additional parameters as -valid. -- Improved line number reporting from earlier releases. Line numbers -are now reported properly for errors in any type of block. + This is a big release and there are a number of backwards + incompatibilities with version 1.05 and earlier. Please make sure to + read the UPGRADE document, which covers these in more detail. + + [ ENHANCEMENTS ] + + - Mason can always detect when an object file was compiled with an + incompatible compiler/lexer, even if the object file contains syntax + errors. + - Method and subcomponent blocks with no name (<%method>) were caught + as an error, but the error message was very confusing. This has been + fixed. + - Added HTML::Mason::Subclassing, documentation on subclassing Mason + objects. + - Added documentation on the interaction between <%once> sections and + preloading components. + - Mason automatically calls $m->clear_buffer when $m->decline is + called. + + [ BUG FIXES ] + + - Fixed a bug in the lexer that made it think it had found a Perl-line + where none existed. + - Fixed a bug related to handling of parameters in httpd.conf files. + This was only noticeable if you attempted to provide a subclass of one + of Mason's classes (like your own Request class) that took its own + parameters. Mason was not recognizing those additional parameters as + valid. + - Improved line number reporting from earlier releases. Line numbers + are now reported properly for errors in any type of block. 1.09_02 June 4, 2002 -[ INCOMPATIBLE CHANGES ] - -- ** The Component class's create_time method has been renamed as -load_time. -- ** Relative component paths in the $interp->exec() method are no -longer resolved. All component paths must be absolute. Relative path -resolution was added in 1.09_01 so this change is unlikely to affect -most users. -- ** Removed option to expire a component from the Apache::Status -page. This option made little sense since components are cached -per-process, and there's no guarantee that any particular process has -cached a given component. Again, this is a feature added in 1.09_01 -so this change should not cause most people any problems. -- ** Renamed CGIHandler's handle_cgi method to handle_comp. -- ** Removed the dev_dirs feature from CGIHandler. -- ** The default component root when not using ApacheHandler or -CGIHandler is now the current working directory at the time the -HTML::Mason::Resolver::File class is loaded. - -[ ENHANCEMENTS ] - -- All the modules included with Mason are now documented. -- Various pieces of existing documentation have been tweaked and -modified. -- Added handle_cgi_object method to CGIHandler. -- Mason works with the CVS version of mod_perl 2.0 when mod_perl 2.0's -backwards compatibility layer is used. AFAICT, the CVS version is -close enough to what will be released as 2.0 that few, if any, changes -should be required once 2.0 is out. -- When running Mason with the ApacheHandler or CGIHandler modules, the -Mason request object ($m) now has a "redirect" method, which can be -used to send an HTTP redirect to the client. L{Request/redirect} - -[ BUG FIXES ] - -- $m->flush_buffer was sending out '' to the buffer, even if no output -existed. This caused ApacheHandler to send headers, which broke -redirects, for example. -- Fix broken Apache::Status page (reported by Thomas A. Lowery). -- The lexing code now handles some weird edge case errors in a better -way. One of these involved a component starting with a invalid block -name like <%foo>. -- A component that compiles into Perl code that causes syntax errors -seems to trigger a Perl bug when Mason attempts to eval it. The -symptom is that Mason simply hangs when it tries to eval the -component's object file. This bug is present in Perls before 5.7.3, -but appears to be fixed in the development branch. Mason will use -alarm, if supported by the system, to work around this. -- Output from subrequests was appearing _before_ other component -output. The new default is that this output appears "inline" in the -calling component, which we think is most DWIM-ish. Alternate -behavior can be achieved by explicitly setting the subrequest's -out_method parameter. -- The $r object provided by CGIHandler.pm was not passing header -values to CGI.pm in a way that CGI.pm liked. Now we add a '-' to the -front of the header name if necessary, and all headers are canonized -to lower case in order to avoid having duplicates. -- Mason only requires Apache::Request if you have mod_perl installed -already. + [ INCOMPATIBLE CHANGES ] + + - ** The Component class's create_time method has been renamed as + load_time. + - ** Relative component paths in the $interp->exec() method are no + longer resolved. All component paths must be absolute. Relative path + resolution was added in 1.09_01 so this change is unlikely to affect + most users. + - ** Removed option to expire a component from the Apache::Status + page. This option made little sense since components are cached + per-process, and there's no guarantee that any particular process has + cached a given component. Again, this is a feature added in 1.09_01 + so this change should not cause most people any problems. + - ** Renamed CGIHandler's handle_cgi method to handle_comp. + - ** Removed the dev_dirs feature from CGIHandler. + - ** The default component root when not using ApacheHandler or + CGIHandler is now the current working directory at the time the + HTML::Mason::Resolver::File class is loaded. + + [ ENHANCEMENTS ] + + - All the modules included with Mason are now documented. + - Various pieces of existing documentation have been tweaked and + modified. + - Added handle_cgi_object method to CGIHandler. + - Mason works with the CVS version of mod_perl 2.0 when mod_perl 2.0's + backwards compatibility layer is used. AFAICT, the CVS version is + close enough to what will be released as 2.0 that few, if any, changes + should be required once 2.0 is out. + - When running Mason with the ApacheHandler or CGIHandler modules, the + Mason request object ($m) now has a "redirect" method, which can be + used to send an HTTP redirect to the client. + [ BUG FIXES ] + + - $m->flush_buffer was sending out '' to the buffer, even if no output + existed. This caused ApacheHandler to send headers, which broke + redirects, for example. + - Fix broken Apache::Status page (reported by Thomas A. Lowery). + - The lexing code now handles some weird edge case errors in a better + way. One of these involved a component starting with a invalid block + name like <%foo>. + - A component that compiles into Perl code that causes syntax errors + seems to trigger a Perl bug when Mason attempts to eval it. The + symptom is that Mason simply hangs when it tries to eval the + component's object file. This bug is present in Perls before 5.7.3, + but appears to be fixed in the development branch. Mason will use + alarm, if supported by the system, to work around this. + - Output from subrequests was appearing _before_ other component + output. The new default is that this output appears "inline" in the + calling component, which we think is most DWIM-ish. Alternate + behavior can be achieved by explicitly setting the subrequest's + out_method parameter. + - The $r object provided by CGIHandler.pm was not passing header + values to CGI.pm in a way that CGI.pm liked. Now we add a '-' to the + front of the header name if necessary, and all headers are canonized + to lower case in order to avoid having duplicates. + - Mason only requires Apache::Request if you have mod_perl installed + already. 1.09_01 April 4, 2002 -[ INCOMPATIBLE CHANGES ] - -- ** Errors now report line numbers from the component source file. -- ** The Parser class has been removed entirely. Its functionality -has been split between the Lexer and Compiler objects. L{Compiler} -- ** The debug file feature has been removed. -- ** The previewer has been removed. -- ** The system log feature has been removed. -- ** The Interp use_reload_files parameter has been removed. The new -static_source parameter provides a useful, and conceptually simpler, -replacement. L{Interp/static_source} -- ** Mason's built in caching now uses Cache::Cache to do all the -heavy lifting. This means that parameters for both the $m->cache and -$m->cache_self methods have changed. -- ** The ApacheHandler's top_level_predicate parameter has been -removed. -- ** The mc_* commands have been removed entirely. -- ** The Interp's taint_check parameter has been removed. Mason now -simply determines whether or not it is running in taint mode and acts -appropriately without user intervention. -- ** Mason now uses Apache::Request as its default argument processing -module. You can explicitly use CGI.pm if you prefer. -- ** The ApacheHandler module no longers accepts parameters when -imported. Instead, you specify this parameter via the ApacheHandler -constructor. -- ** The ApacheHandler module now requires a minimum of mod_perl 1.22. -- ** The Component's run_count() and first_time() methods have been -removed. -- ** The HTML::Mason::Config module is no longer needed, and is no -longer generated during the installation process. -- ** The Interp's autohandler_name and dhandler_name params no longer take -undef as a valid value. -- ** The Interp's use_autohandlers, use_dhandlers, and -allow_recursive_autohandlers parameters have all been removed. -- ** The $m->top_args and $m->top_comp methods have been renamed to -$m->request_args and $m->request_comp. The old methods are deprecated -but will work until the 1.20 release. -- ** Passing an Interp object to the ApacheHandler constructor (as in -a handler.pl file) will no longer work unless you set the Interp's -resolver_class parameter to -'HTML::Mason::Resolver::File::ApacheHandler'. However, you can now -pass Interp constructor params directly to the ApacheHandler -constructor, which will create the interp object internally. -- ** The MasonMultipleConfig httpd.conf parameter has been removed. -Mason can now figure this out by itself. -- ** The HTML::Mason::Interp time() method has gone away. -- ** The base_comp is now changed for each component call, unless that -component call uses a component object for its first argument, or the -call starts with SELF: or PARENT:. -- ** The "perl_" prefix for Mason tags is no longer supported. -- ** The backslash character now eliminates a newline at the end of -any line, not just before %-lines and section tags. - -[ ENHANCEMENTS AND NEW FEATURES ] - -- It is now possible to pass chunks of component content as part of a -component call. L{Devel/Component Calls with Content} -- Mason now supports subrequests via the new $m->subexec and -$m->make_subrequest methods. L{Devel/Subrequests} -- Mason no longer requires you to specify a component root or data -directory. The component root now defaults to your document root in a -web context, or your filesystem root in a standalone context. The -data directory will be a subdirectory of your server root under -mod_perl, and Mason can work without any data directory at all in -other contexts. -- The Resolver class API has been redesigned and is documented for the -first time. -- The installation process will offer to help you setup Mason for use -with mod_perl if it can find your Apache configuration file and it -cannot find an existing Mason configuration. -- The HTML::Mason::Request->instance method is now the officially -supported way of getting at the current request object outside of a -Mason component (suggested by John Siracusa). -- The HTML::Mason::Interp->comp_exists method now checks for a -component's existence without loading the component (suggested by -Randal Schwartz). -- Mason now includes a module called HTML::Mason::CGIHandler, which -greatly simplifies the use of Mason via CGI scripts. -- Mason now uses File::Spec for all filesystem operations. -- All the .pod files have been merged into their corresponding .pm -files, where appropriate. -- Added the Component attr_if_exists method (suggested by Joe -Frisbie). -- We now use the HTML::Entities module's encode function for the 'h' -substitution escape flag. This module escapes high-ascii characters -properly. -- Calling a method via $m->comp('comp:method') works just like -$comp->call_method('method'). -- When an object contains other objects then the containing object's -constructor accepts parameters intended for the contained objects. -For example, the Interp object contains a Resolver object and Request -objects. The Interp's new method will accept constructor parameter -for both the Resolver and Request objects. -- The ApacheHandler args_method is now a per-object parameter. -- Mason is now much smarter about recompiling components. In general, -it can detect if compiler options for a compiled component are -different from the current options, and will recompile the component -if necessary. The exception to this is that with compiler parameters -which take callbacks (such as preprocess), Mason can only tell if such -a parameter is present, not whether the actual callback has changed. -- The ApacheHandler object will chown any files created during server -startup as needed. - -[ BUG FIXES ] - -- The <%args> section can now contain comments which contain the -string '=>' (reported by Chris Hutchinson). -- Fixed the longstanding bug that using print() or $r->print() causes -output/headers to appear out of order. You can now safely use these, -though we still recommend that you use Mason to send output. -- Filtered output now does appear when $m->abort() used. However, an -abort inside a component called via $m->scomp() still cause the output -generated by that component to disappear. - -[ INTERNALS ] - -- Output buffering and filtering is handled by the new -HTML::Mason::Buffer class. -- All fatal errors thrown during component execution are exception -objects in the HTML::Mason::Exception class hierarchy. -- The CGI GET/POST argument processing code has been simplified -(submitted by Ilmari Karonen). -- ApacheHandler now uses a special Resolver subclass to translate URIs -to component paths. -- Parameters passed to "set" accessors are now validated in the same -way as constructor parameters. -- The component requested and the arguments it was passed are now -properties of the Request object. + [ INCOMPATIBLE CHANGES ] + + - ** Errors now report line numbers from the component source file. + - ** The Parser class has been removed entirely. Its functionality + has been split between the Lexer and Compiler objects. + - ** The debug file feature has been removed. + - ** The previewer has been removed. + - ** The system log feature has been removed. + - ** The Interp use_reload_files parameter has been removed. The new + static_source parameter provides a useful, and conceptually simpler, + replacement. + - ** Mason's built in caching now uses Cache::Cache to do all the + heavy lifting. This means that parameters for both the $m->cache and + $m->cache_self methods have changed. + - ** The ApacheHandler's top_level_predicate parameter has been + removed. + - ** The mc_* commands have been removed entirely. + - ** The Interp's taint_check parameter has been removed. Mason now + simply determines whether or not it is running in taint mode and acts + appropriately without user intervention. + - ** Mason now uses Apache::Request as its default argument processing + module. You can explicitly use CGI.pm if you prefer. + - ** The ApacheHandler module no longers accepts parameters when + imported. Instead, you specify this parameter via the ApacheHandler + constructor. + - ** The ApacheHandler module now requires a minimum of mod_perl 1.22. + - ** The Component's run_count() and first_time() methods have been + removed. + - ** The HTML::Mason::Config module is no longer needed, and is no + longer generated during the installation process. + - ** The Interp's autohandler_name and dhandler_name params no longer take + undef as a valid value. + - ** The Interp's use_autohandlers, use_dhandlers, and + allow_recursive_autohandlers parameters have all been removed. + - ** The $m->top_args and $m->top_comp methods have been renamed to + $m->request_args and $m->request_comp. The old methods are deprecated + but will work until the 1.20 release. + - ** Passing an Interp object to the ApacheHandler constructor (as in + a handler.pl file) will no longer work unless you set the Interp's + resolver_class parameter to + 'HTML::Mason::Resolver::File::ApacheHandler'. However, you can now + pass Interp constructor params directly to the ApacheHandler + constructor, which will create the interp object internally. + - ** The MasonMultipleConfig httpd.conf parameter has been removed. + Mason can now figure this out by itself. + - ** The HTML::Mason::Interp time() method has gone away. + - ** The base_comp is now changed for each component call, unless that + component call uses a component object for its first argument, or the + call starts with SELF: or PARENT:. + - ** The "perl_" prefix for Mason tags is no longer supported. + - ** The backslash character now eliminates a newline at the end of + any line, not just before %-lines and section tags. + + [ ENHANCEMENTS AND NEW FEATURES ] + + - It is now possible to pass chunks of component content as part of a + component call. + - Mason now supports subrequests via the new $m->subexec and + $m->make_subrequest methods. + - Mason no longer requires you to specify a component root or data + directory. The component root now defaults to your document root in a + web context, or your filesystem root in a standalone context. The + data directory will be a subdirectory of your server root under + mod_perl, and Mason can work without any data directory at all in + other contexts. + - The Resolver class API has been redesigned and is documented for the + first time. + - The installation process will offer to help you setup Mason for use + with mod_perl if it can find your Apache configuration file and it + cannot find an existing Mason configuration. + - The HTML::Mason::Request->instance method is now the officially + supported way of getting at the current request object outside of a + Mason component (suggested by John Siracusa). + - The HTML::Mason::Interp->comp_exists method now checks for a + component's existence without loading the component (suggested by + Randal Schwartz). + - Mason now includes a module called HTML::Mason::CGIHandler, which + greatly simplifies the use of Mason via CGI scripts. + - Mason now uses File::Spec for all filesystem operations. + - All the .pod files have been merged into their corresponding .pm + files, where appropriate. + - Added the Component attr_if_exists method (suggested by Joe + Frisbie). + - We now use the HTML::Entities module's encode function for the 'h' + substitution escape flag. This module escapes high-ascii characters + properly. + - Calling a method via $m->comp('comp:method') works just like + $comp->call_method('method'). + - When an object contains other objects then the containing object's + constructor accepts parameters intended for the contained objects. + For example, the Interp object contains a Resolver object and Request + objects. The Interp's new method will accept constructor parameter + for both the Resolver and Request objects. + - The ApacheHandler args_method is now a per-object parameter. + - Mason is now much smarter about recompiling components. In general, + it can detect if compiler options for a compiled component are + different from the current options, and will recompile the component + if necessary. The exception to this is that with compiler parameters + which take callbacks (such as preprocess), Mason can only tell if such + a parameter is present, not whether the actual callback has changed. + - The ApacheHandler object will chown any files created during server + startup as needed. + + [ BUG FIXES ] + + - The <%args> section can now contain comments which contain the + string '=>' (reported by Chris Hutchinson). + - Fixed the longstanding bug that using print() or $r->print() causes + output/headers to appear out of order. You can now safely use these, + though we still recommend that you use Mason to send output. + - Filtered output now does appear when $m->abort() used. However, an + abort inside a component called via $m->scomp() still cause the output + generated by that component to disappear. + + [ INTERNALS ] + + - Output buffering and filtering is handled by the new + HTML::Mason::Buffer class. + - All fatal errors thrown during component execution are exception + objects in the HTML::Mason::Exception class hierarchy. + - The CGI GET/POST argument processing code has been simplified + (submitted by Ilmari Karonen). + - ApacheHandler now uses a special Resolver subclass to translate URIs + to component paths. + - Parameters passed to "set" accessors are now validated in the same + way as constructor parameters. + - The component requested and the arguments it was passed are now + properties of the Request object. 1.05 April 30, 2002 -- Fixed improper handling of parameters for non-GET/POST -request. (submitted by Radu Greab) -- Fixed Interp to accept a resolver object param. (reported by Bojan -Jovanovic) -- Fixed infinite loop when calling $m->decline with // in dhandler -arg. (reported by Baldur Kristinsson) + - Fixed improper handling of parameters for non-GET/POST + request. (submitted by Radu Greab) + - Fixed Interp to accept a resolver object param. (reported by Bojan + Jovanovic) + - Fixed infinite loop when calling $m->decline with // in dhandler + arg. (reported by Baldur Kristinsson) 1.04 October 30, 2001 -- Fixed locale parser_version 0,8 problem. (submitted by Louis-David Mitterrand) -- Fixed inability to use '/' for comp_root. (reported by Doug Hunt) -- Fixed HTML::Mason::Parser::make_dirs dying when reload_file not -defined. (reported by Ivan E. Panchenko) -- Made error_process regexps more specific. (suggested by Vadim Belman) -- Fixed $m->count. (reported by David Wheeler) -- Fixed writing of object files in taint mode. (submitted by Barrie Slaymaker) -- Made it possible to run Makefile.PL without prompts. + - Fixed locale parser_version 0,8 problem. (submitted by Louis-David Mitterrand) + - Fixed inability to use '/' for comp_root. (reported by Doug Hunt) + - Fixed HTML::Mason::Parser::make_dirs dying when reload_file not + defined. (reported by Ivan E. Panchenko) + - Made error_process regexps more specific. (suggested by Vadim Belman) + - Fixed $m->count. (reported by David Wheeler) + - Fixed writing of object files in taint mode. (submitted by Barrie Slaymaker) + - Made it possible to run Makefile.PL without prompts. 1.03 May 17, 2001 -- Made raw error message accessible from the new error display via -an unobtrusive link. -- Fixed Apache tests when started by a non-root user. (reported -by Barrie Slaymaker) -- Added short-circuits for Apache tests on Win32 and on systems with -Apache configurations that cannot be properly parsed. (reported by -Jindra Vavruska) + - Made raw error message accessible from the new error display via + an unobtrusive link. + - Fixed Apache tests when started by a non-root user. (reported + by Barrie Slaymaker) + - Added short-circuits for Apache tests on Win32 and on systems with + Apache configurations that cannot be properly parsed. (reported by + Jindra Vavruska) 1.02 April 17, 2001 -- Completely redesigned error display. The new display includes a -contextual source listing and readable stacktrace. You can access the -old error behavior with the raw_html and raw_fatal error modes. -(implemented by Matthew Lewinski) -- Fixed $m->file to close its filehandle between uses. (reported by -Matthew Lewinski) -- Fixed bad interaction with Mason 1.01 and CPAN module, by adding -version number to ApacheHandler.pm. -- Fixed $m->top_comp to work as documented, and made documentation -a bit more explicit. (reported by Gordon Henriksen) -- Fixed specification of a component root as "foo => /foo" in -httpd.conf. (reported by Chuck O'Donnell) -- Added MasonDeclineDirs, accidentally omitted in 1.01. (reported by -David Wheeler) -- Changed sql examples in Devel.pod to use bind variables. (suggested -by Austin S. Lin) + - Completely redesigned error display. The new display includes a + contextual source listing and readable stacktrace. You can access the + old error behavior with the raw_html and raw_fatal error modes. + (implemented by Matthew Lewinski) + - Fixed $m->file to close its filehandle between uses. (reported by + Matthew Lewinski) + - Fixed bad interaction with Mason 1.01 and CPAN module, by adding + version number to ApacheHandler.pm. + - Fixed $m->top_comp to work as documented, and made documentation + a bit more explicit. (reported by Gordon Henriksen) + - Fixed specification of a component root as "foo => /foo" in + httpd.conf. (reported by Chuck O'Donnell) + - Added MasonDeclineDirs, accidentally omitted in 1.01. (reported by + David Wheeler) + - Changed sql examples in Devel.pod to use bind variables. (suggested + by Austin S. Lin) 1.015 April 3, 2001 -- Fixed incompatibility with mod_perl < 1.21_01, introduced in 1.01. -- Added 'use Apache.pm' to ApacheHandler.pm, necessary for some -mod_perl installations. + - Fixed incompatibility with mod_perl < 1.21_01, introduced in 1.01. + - Added 'use Apache.pm' to ApacheHandler.pm, necessary for some + mod_perl installations. 1.01 March 27, 2001 -- Implemented configuration of Mason from httpd.conf via PerlSetVar -directives. This removes the need for a handler.pl file in many -cases. L{Admin/CONFIGURING MASON VIA httpd.conf} -- Revamped ApacheHandler tests to use a real Apache web server and -mod_perl (assuming this is installed). This allows for much better -testing of Mason. However, the test suite takes a bit longer to run -as starting and stopping the server can take a second or two each -time. -- ** Fixed handling of POST requests with query strings via CGI.pm; -the query string arguments were previously ignored, and are now merged -with POST arguments. This is an incompatible change only for those -whose code relied on the arguments missing. -- Added basic validation of arguments to Parser, Interp, -and ApacheHandler constructors. -- Added interp->die_handler, allowing you to install your own -subroutine as $SIG{__DIE__} to catch errors during component -execution. Alternately, you can simply turn the special error -handling off. L{Interp/die_handler} -- Added interp->use_dhandlers and interp->use_autohandlers, more -intuitive ways to turn on/off dhandlers and autohandlers. -- Eliminated interp->verbose_compile_error, which is no longer needed -and has not worked for some time. -- Wrapped each component call in eval, allowing us to simplify the -request stack code. No visible user change. -- Documented that you cannot call return() from a <%shared> or <%once> -section. (reported by Paolo Campanella) -- Fixed documentation of escaped newline behavior. -- Fixed incorrect code for using mod_perl args method in -eg/session_handler.pl. + - Implemented configuration of Mason from httpd.conf via PerlSetVar + directives. This removes the need for a handler.pl file in many + cases. + - Revamped ApacheHandler tests to use a real Apache web server and + mod_perl (assuming this is installed). This allows for much better + testing of Mason. However, the test suite takes a bit longer to run + as starting and stopping the server can take a second or two each + time. + - ** Fixed handling of POST requests with query strings via CGI.pm; + the query string arguments were previously ignored, and are now merged + with POST arguments. This is an incompatible change only for those + whose code relied on the arguments missing. + - Added basic validation of arguments to Parser, Interp, + and ApacheHandler constructors. + - Added interp->die_handler, allowing you to install your own + subroutine as $SIG{__DIE__} to catch errors during component + execution. Alternately, you can simply turn the special error + handling off. + - Added interp->use_dhandlers and interp->use_autohandlers, more + intuitive ways to turn on/off dhandlers and autohandlers. + - Eliminated interp->verbose_compile_error, which is no longer needed + and has not worked for some time. + - Wrapped each component call in eval, allowing us to simplify the + request stack code. No visible user change. + - Documented that you cannot call return() from a <%shared> or <%once> + section. (reported by Paolo Campanella) + - Fixed documentation of escaped newline behavior. + - Fixed incorrect code for using mod_perl args method in + eg/session_handler.pl. 1.0 January 31, 2001 -- Identical to 0.896 except for version. + - Identical to 0.896 except for version. 0.896 January 5, 2001 -- Fixed bug preventing Mason from working with PerlFreshRestart. -- Fixed use_reload_file to work as documented and not stat() source files. (submitted by Benjamin John Turner) -- Fixed display in Apache::Status. -- Documented the significance of ordering in <%args> sections. -- Fixed documentation of %ARGS with regards to hashes passed in query string. (suggested by Adam Stubbs) -- Added version # to 'use Apache::Session::File' in session_handler.pl. -- Fixed preloads documentation to match reality. + - Fixed bug preventing Mason from working with PerlFreshRestart. + - Fixed use_reload_file to work as documented and not stat() source files. (submitted by Benjamin John Turner) + - Fixed display in Apache::Status. + - Documented the significance of ordering in <%args> sections. + - Fixed documentation of %ARGS with regards to hashes passed in query string. (suggested by Adam Stubbs) + - Added version # to 'use Apache::Session::File' in session_handler.pl. + - Fixed preloads documentation to match reality. 0.895 December 11, 2000 -- ** Removed ApacheHandler from Mason.pm. It is now necessary to -explicitly 'use' the HTML::Mason::ApacheHandler module in your -handler.pl file (or elsewhere). This fixes an intermittent -args_method bug and cleans up Mason.pod. -- ** Changed $m->caller_args to return a hash reference in scalar -context and a list/hash in list context. Older calls expecting a list -reference will need to be changed. L{Request/item_caller_args} -- Fixed Mason to work under Perl's tainting mode again. Thanks to John -Tobey for pointing us in the right direction. -- Modified the definition of "next component" to depend on the current -component, not merely the number of times $m->call_next has been -called. This allows $m->fetch_next to work as documented. Also -added $m->fetch_next_all, which returns the rest of the wrapper chain. -L{Request/item_fetch_next} -- Fixed bug with ../.. in component paths. Versions 0.88 and 0.89 -would create multiple object files for a single component and would -allow any filename to be treated as an internal component. This was -_not_ exploitable externally via Apache, however. (reported by Pascal -Eeftinck) -- Implemented $m->top_comp and $m->top_args, and fixed documentation -for $m->callers(-1). (suggested by Kees Vonk) L{Request/item_top_args} -- Added full line comments to <%args> sections. (suggested by Matthew -Lewinski) -- Revamped test harness system with HTML::Mason::Tests, greatly -simplifying the new test creation process. -- Implemented partial compliance with Apache::Filter; Mason can now be -used as a pre-filter but not yet as a post-filter. i.e. Configurations -like "PerlHandler HTML::Mason Apache::Compress" will work. -- Implemented logging of NOT FOUND errors to match plain Apache. Also -issue special warnings for Mason-specific causes of NOT FOUND. -- Documented Mason request object's aborted and aborted_value methods. -L{Request/item_aborted} -- Documented the fact that any variable declared in the <%args> -section must be a valid Perl variable name. The parser will now give -an error if it encounters an invalid name (such as $foo.x). -- Eliminated upgrade of Apache request object to Apache::Request class -if this were done previously. (submitted by Shevek) -- Removed FAQ from distribution. Users should seek out the most -current FAQ, now maintained by Kwindla Kramer, on the web. -- Fixed bug where an attempt to escape a substitution that contained a -function operating on a list (like sort or map) ended up appending the -escape flag characters to the list being operated on. -- Fixed the test 08-ah to work with CGI versions >= 3.0. (reported by -Alexei V. Barantsev) -- Fixed a problem with the parser when running with a locale that used -a comma as the decimal separator instead of a period. (reported by -Louis-David Mitterrand) -- Clarified the 'u' escape flag in docs. -- Removed use of $r->finfo in Apachehandler.pm, which causes random -core dumps in certain versions of mod_perl. -- Updated eg/session_handler.pl code to match Apache::Session 1.50+. -- Fixed various problems with debug files. -- Fixed a bug sometimes seen when the parser failed to parse a -component called by another component. -- Fixed a bug that prevented the $m->cache_self method from returning -anything. -- Fixed documentation regarding 'months' and 'years' units in -expire_in cache flag. -- Fixed bug in HTML/Mason/Component/Subcomponent.pm create_time -method. (reported by Caleb Crome) -- Fixed bug where Mason would try to escape undefined values in a -substitution with an escape flag. (submitted by Denis Shaposhnikov) + - ** Removed ApacheHandler from Mason.pm. It is now necessary to + explicitly 'use' the HTML::Mason::ApacheHandler module in your + handler.pl file (or elsewhere). This fixes an intermittent + args_method bug and cleans up Mason.pod. + - ** Changed $m->caller_args to return a hash reference in scalar + context and a list/hash in list context. Older calls expecting a list + reference will need to be changed. + - Fixed Mason to work under Perl's tainting mode again. Thanks to John + Tobey for pointing us in the right direction. + - Modified the definition of "next component" to depend on the current + component, not merely the number of times $m->call_next has been + called. This allows $m->fetch_next to work as documented. Also + added $m->fetch_next_all, which returns the rest of the wrapper chain. + - Fixed bug with ../.. in component paths. Versions 0.88 and 0.89 + would create multiple object files for a single component and would + allow any filename to be treated as an internal component. This was + _not_ exploitable externally via Apache, however. (reported by Pascal + Eeftinck) + - Implemented $m->top_comp and $m->top_args, and fixed documentation + for $m->callers(-1). (suggested by Kees Vonk) + - Added full line comments to <%args> sections. (suggested by Matthew + Lewinski) + - Revamped test harness system with HTML::Mason::Tests, greatly + simplifying the new test creation process. + - Implemented partial compliance with Apache::Filter; Mason can now be + used as a pre-filter but not yet as a post-filter. i.e. Configurations + like "PerlHandler HTML::Mason Apache::Compress" will work. + - Implemented logging of NOT FOUND errors to match plain Apache. Also + issue special warnings for Mason-specific causes of NOT FOUND. + - Documented Mason request object's aborted and aborted_value methods. + - Documented the fact that any variable declared in the <%args> + section must be a valid Perl variable name. The parser will now give + an error if it encounters an invalid name (such as $foo.x). + - Eliminated upgrade of Apache request object to Apache::Request class + if this were done previously. (submitted by Shevek) + - Removed FAQ from distribution. Users should seek out the most + current FAQ, now maintained by Kwindla Kramer, on the web. + - Fixed bug where an attempt to escape a substitution that contained a + function operating on a list (like sort or map) ended up appending the + escape flag characters to the list being operated on. + - Fixed the test 08-ah to work with CGI versions >= 3.0. (reported by + Alexei V. Barantsev) + - Fixed a problem with the parser when running with a locale that used + a comma as the decimal separator instead of a period. (reported by + Louis-David Mitterrand) + - Clarified the 'u' escape flag in docs. + - Removed use of $r->finfo in Apachehandler.pm, which causes random + core dumps in certain versions of mod_perl. + - Updated eg/session_handler.pl code to match Apache::Session 1.50+. + - Fixed various problems with debug files. + - Fixed a bug sometimes seen when the parser failed to parse a + component called by another component. + - Fixed a bug that prevented the $m->cache_self method from returning + anything. + - Fixed documentation regarding 'months' and 'years' units in + expire_in cache flag. + - Fixed bug in HTML/Mason/Component/Subcomponent.pm create_time + method. (reported by Caleb Crome) + - Fixed bug where Mason would try to escape undefined values in a + substitution with an escape flag. (submitted by Denis Shaposhnikov) 0.89 September 14, 2000 -- Fixed broken CGI args implementation from 0.88 (old arguments -appearing in new requests) -- Fixed system log bug from 0.88 + - Fixed broken CGI args implementation from 0.88 (old arguments + appearing in new requests) + - Fixed system log bug from 0.88 0.88 August 30, 2000 -- Fixed broken Parser postprocessor code (broken since 0.85). Added -tests for this code path as well as the preprocessor feature. -(reported by Tim Bishop) -- Replaced lots of simple accessors with new HTML::Mason::MethodMaker -(which just makes simple read-only and read-write accessor methods). -- Removed all direct hash key access from one object into another. -- Removed all unneeded uses of Exporter in various modules. -- Added warning about using mod_perl as a DSO to README file. -- Added 'cgi_object' method to HTML::Mason::Request::ApacheHandler. -This method returns the CGI object Mason uses internally (unless -you're using Apache::Request instead in which case its a fatal error). -Added documentation for this. (suggested by many people). -- Squashed warning in assignment to %ARGS in component sub body. -- Fixed call_method and scall_method to take arbitrary list of args -instead of hash. -- Fixed expression escape flags to allow arbitrary following -whitespace. (reported by Mikhail Zabaluev) -- Added FAQ on how to handle file uploads. -- $m->cache returns the value stored on a successful store action. -- Reduced memory usage by removing unneeded uses of various modules. -On my box I see about a 500k or so reduction in memory use (Dave). -- Removed all uses of the IO::* modules. -- Mason seems to be working under a mod_perl DSO, at least under -mod_perl 1.24 and Apache 1.3.12. This probably has nothing to do with -Mason but the very adventurous are encouraged to experiment with a -mod_perl DSO and report back to the mason list. + - Fixed broken Parser postprocessor code (broken since 0.85). Added + tests for this code path as well as the preprocessor feature. + (reported by Tim Bishop) + - Replaced lots of simple accessors with new HTML::Mason::MethodMaker + (which just makes simple read-only and read-write accessor methods). + - Removed all direct hash key access from one object into another. + - Removed all unneeded uses of Exporter in various modules. + - Added warning about using mod_perl as a DSO to README file. + - Added 'cgi_object' method to HTML::Mason::Request::ApacheHandler. + This method returns the CGI object Mason uses internally (unless + you're using Apache::Request instead in which case its a fatal error). + Added documentation for this. (suggested by many people). + - Squashed warning in assignment to %ARGS in component sub body. + - Fixed call_method and scall_method to take arbitrary list of args + instead of hash. + - Fixed expression escape flags to allow arbitrary following + whitespace. (reported by Mikhail Zabaluev) + - Added FAQ on how to handle file uploads. + - $m->cache returns the value stored on a successful store action. + - Reduced memory usage by removing unneeded uses of various modules. + On my box I see about a 500k or so reduction in memory use (Dave). + - Removed all uses of the IO::* modules. + - Mason seems to be working under a mod_perl DSO, at least under + mod_perl 1.24 and Apache 1.3.12. This probably has nothing to do with + Mason but the very adventurous are encouraged to experiment with a + mod_perl DSO and report back to the mason list. 0.87 May 24, 2000 -- Fixed multiple GET/POST argument glitch introduced in 0.86. -(reported by Matt Hoskins) + - Fixed multiple GET/POST argument glitch introduced in 0.86. + (reported by Matt Hoskins) 0.86 May 18, 2000 -- Fixed multiple-<%perl>-section infinite loop bug introduced in 0.85. -- (Re-)Fixed Apache hang on POST not-found bug. -- Added $m->scall_method, analagous to $m->scomp. (suggested by Michael Shulman) -- When using mod_perl args method, $r is upgraded to Apache::Request object. -(suggested by Matt Hoskins) -- Documented attr, methods, and flags in Component.pod. -- Improved error msg for <%def> or <%method> lacking name. -- Improved error msg for using invalid embedded tag in def or -method. (submitted by Dave Rolsky) -- Eliminated reliance on hash ordering in tests. -- Changed test scripts to create separate data dirs for each test -branch and clear data dir at start of test. -- Added mixed case and repeated sections to <%perl> tests. -- ** Removed mod_perl specific $m->http_input; can no longer be -supported. -- Fixed args processing loop to allow multiple file -uploads. (submitted by Matt Hoskins) + - Fixed multiple-<%perl>-section infinite loop bug introduced in 0.85. + - (Re-)Fixed Apache hang on POST not-found bug. + - Added $m->scall_method, analagous to $m->scomp. (suggested by Michael Shulman) + - When using mod_perl args method, $r is upgraded to Apache::Request object. + (suggested by Matt Hoskins) + - Documented attr, methods, and flags in Component.pod. + - Improved error msg for <%def> or <%method> lacking name. + - Improved error msg for using invalid embedded tag in def or + method. (submitted by Dave Rolsky) + - Eliminated reliance on hash ordering in tests. + - Changed test scripts to create separate data dirs for each test + branch and clear data dir at start of test. + - Added mixed case and repeated sections to <%perl> tests. + - ** Removed mod_perl specific $m->http_input; can no longer be + supported. + - Fixed args processing loop to allow multiple file + uploads. (submitted by Matt Hoskins) 0.85 May 7, 2000 -- Added object-oriented primitives to components. Components can -define methods and attributes and inherit from parent components. -Templates can access the current page's methods and attributes for -greater flexibility. L{Devel/object_oriented_techniques} -- ** Major improvements/changes to autohandler feature. Autohandlers -are now recursive by default, and all applicable autohandlers for a -given page get a chance to run. If you have multiple autohandlers in -parent/child directories, or if you used autohandlers with -allow_recursive_autohandlers=0, you will need to adjust for the new -policy. L{Devel/autohandlers} -- Integrated a revamped parse_component that is cleaner, more modular -and easier to subclass. Courtesy of Dave Rolsky. -- New <%shared> section contains code that executes once per request -and whose declarations are visible from the main component, methods -and subcomponents alike. L{Devel/e_lt_sharede_gt_} -- Added escape flags for <% %> output. Can now HTML-escape or -URI-escape expressions on a site-wide or per-expression -basis. L{Devel/escaping_expressions} -- Added choice of CGI or Apache::Request when using -ApacheHandler. (submitted by Dave Rolsky) -L{ApacheHandler/parameters_to_the_use_declarat} -- Documented $m->clear_buffer, which removes all pending output from -the buffer. L{Request/item_clear_buffer} -- Fixed keys and expires cache actions from m->cache -interface. (suggested by Matt Hoskins) -- dhandlers can now serve their own directory; added documentation -about handling directories. L{Admin/allowing_directory_requests} -- Fixed dhandler bug introduced in 0.81 whereby $m->dhandler_arg only -contains the first branch of a multi-branch argument. -- Removed memory leak in ApacheHandler::handle_request_1. (submitted -by Pascal Eeftinck and Renzo Toma) -- Changed parent_comp() to owner() for subcomponents/methods. -L{Component/item_owner} -- Increased maximum recurse level from 16 to 32. -- Reorganized syntax section of developer's manual and added a "how to -use this manual" section. -- Added an UPGRADE guide to distribution. -- Added section about securing top-level components to Admin.pod. -(suggested by Sean Cazzell) -L{Admin/securing_top_level_components} -- Added section about declining image requests to Admin.pod. -L{Admin/declining_image_requests} -- Eliminated "Subroutine status_mason redefined" warning when creating -multiple ApacheHandlers. -- Updated cookie expiration in CD-ME example. (reported by Renzo Toma) -- Added a "-f" flag to rm in faq Makefile. (reported by Jeremy Taylor) + - Added object-oriented primitives to components. Components can + define methods and attributes and inherit from parent components. + Templates can access the current page's methods and attributes for + greater flexibility. + - ** Major improvements/changes to autohandler feature. Autohandlers + are now recursive by default, and all applicable autohandlers for a + given page get a chance to run. If you have multiple autohandlers in + parent/child directories, or if you used autohandlers with + allow_recursive_autohandlers=0, you will need to adjust for the new + policy. + - Integrated a revamped parse_component that is cleaner, more modular + and easier to subclass. Courtesy of Dave Rolsky. + - New <%shared> section contains code that executes once per request + and whose declarations are visible from the main component, methods + and subcomponents alike. + - Added escape flags for <% %> output. Can now HTML-escape or + URI-escape expressions on a site-wide or per-expression + basis. + - Added choice of CGI or Apache::Request when using + ApacheHandler. (submitted by Dave Rolsky) + - Documented $m->clear_buffer, which removes all pending output from + the buffer. + - Fixed keys and expires cache actions from m->cache + interface. (suggested by Matt Hoskins) + - dhandlers can now serve their own directory; added documentation + about handling directories. + - Fixed dhandler bug introduced in 0.81 whereby $m->dhandler_arg only + contains the first branch of a multi-branch argument. + - Removed memory leak in ApacheHandler::handle_request_1. (submitted + by Pascal Eeftinck and Renzo Toma) + - Changed parent_comp() to owner() for subcomponents/methods. + - Increased maximum recurse level from 16 to 32. + - Reorganized syntax section of developer's manual and added a "how to + use this manual" section. + - Added an UPGRADE guide to distribution. + - Added section about securing top-level components to Admin.pod. + (suggested by Sean Cazzell) + - Added section about declining image requests to Admin.pod. + - Eliminated "Subroutine status_mason redefined" warning when creating + multiple ApacheHandlers. + - Updated cookie expiration in CD-ME example. (reported by Renzo Toma) + - Added a "-f" flag to rm in faq Makefile. (reported by Jeremy Taylor) 0.81 February 20, 2000 -- Fixed small 0.8 bugs with automatic header sending. Headers are now -sent for blank pages and are not sent on an error status code. -- Fixed bug with default system log file. (submitted by Renzo Toma) -- Eliminated memory leak introduced in 0.8 for a few Linux platforms. -(submitted by Renzo Toma and Pascal Eeftinck) -- Fixed bug with component paths displaying two leading slashes. -- Fixed $comp->source_file when multiple comp roots declared. -- Fixed $m->decline in mod_perl mode. -- Removed legacy dhandler code from ApacheHandler. -- Replaced $r->filename with $r->finfo in ApacheHandler. -(submitted by Dennis Watson) -- Added dynamic virtual server configuration example to Admin.pod. -(submitted by Caleb Crome) + - Fixed small 0.8 bugs with automatic header sending. Headers are now + sent for blank pages and are not sent on an error status code. + - Fixed bug with default system log file. (submitted by Renzo Toma) + - Eliminated memory leak introduced in 0.8 for a few Linux platforms. + (submitted by Renzo Toma and Pascal Eeftinck) + - Fixed bug with component paths displaying two leading slashes. + - Fixed $comp->source_file when multiple comp roots declared. + - Fixed $m->decline in mod_perl mode. + - Removed legacy dhandler code from ApacheHandler. + - Replaced $r->filename with $r->finfo in ApacheHandler. + (submitted by Dennis Watson) + - Added dynamic virtual server configuration example to Admin.pod. + (submitted by Caleb Crome) 0.8 January 23, 2000 -- New integrated request API. $m replaces $REQ as the global variable -containing the current request object. All mc_ commands have been -incorporated into $m methods: mc_comp becomes $m->comp, mc_file -becomes $m->file, etc. The old commands still work for now. -L{Request} -- The utility bin/convert0.8.pl converts existing components to use -the new request API. -- Autohandler methods have been renamed: from mc_auto_next to -$m->call_next and mc_auto_comp to $m->fetch_next. This is in -preparation for a more general component inheritance system. -convert0.8.pl handles this change. L{Devel/autohandlers} -- Can now specify multiple component roots in the spirit of @INC. -(suggested by Ewan Edwards and others) L{Admin/Component roots (multiple)} -- Simplified HTTP header behavior. Headers are sent at the end of the -request (in batch mode) or just before the first non-whitespace output -(in stream mode). suppress_http_header no longer needed. -L{Devel/sending http headers} -- New organization of Component class into subclasses -Component::FileBased and Component::Subcomponent. No outward change. -- Updated object file format. Mason should generally auto-detect -and recompile old object files, but may not catch everything. Try -removing your object directory if errors persist. -- ** mc_suppress_http_header command still exists but does nothing. -In most cases this should not cause a problem. The only -incompatibility is if you have used mc_suppress_http_header to -suppress headers completely (i.e. you don't want Mason to send headers -at all); in this case pass auto_send_headers=>0 to ApacheHandler. -- Output mode parameter was moved from ah->output_mode to -interp->out_mode, to make it independent of mod_perl. -ah->output_mode still works. L{Interp/item_out_mode} -- New in-memory code cache keeps track of component usage, and -discards the most infrequently used components as needed. You can -specify the cache size with interp->max_code_cache_size. L{Admin/Code -cache} -- ** Eliminated the now unnecessary interp->code_cache_mode. -- ** Eliminated the "source references" optimization, a common source of -bugs, no longer needed with the new code cache. -- Allow arguments to be accessed via @_ as in regular subroutines; no -longer required to be in hash form. (suggested by Ken Williams) -L{Devel/using instead} -- Added $m->scomp, which returns the output of the component call -instead of printing it. This is a cleaner replacement for the STORE -parameter, which still works but is no longer officially documented. -L{Request/item_scomp} -- Added $m->flush_buffer, which forces the buffer to be sent to the -client when in batch mode. L{Request/item_flush_buffer} -- Added $m->caller_args, which returns the argument list for any point -in the stack. (suggested by Lee Semel) L{Request/item_caller_args} -- Added $m->decline, which passes control to the next dhandler. -(suggested by Chuck O'Donnell) L{Request/item_decline} -- Augmented $m->cache_self to cache return values as well as output. -(suggested by Jon Frisby) L{Request/item_cache_self} -- Changed data cache filenames from colon-separated to url-encode -style for Win32 compatibility. (submitted by Ken Williams) -L{Admin/data_caching} -- Added improved, separate session_handler.pl for session handling. -- ** mc_comp_source no longer works for non-existent components. -- ** Removed mc_date legacy command. -- Many new test scripts. -- Added warnings about using Mason with mod_perl DSO. -- Added more site configuration examples to Admin.pod. -L{Admin/configuring virtual sites} -- Split object parameter methods (interp->comp_root, etc.) into -read/write and read-only as appropriate. -- Fixed request stack corruption when die() or error from one -component is caught by another component's eval. -- Fixed doc_root / comp_root mismatch on case-insensitive O/S. -(reported by John Arnold) -- Fixed "directory not absolute" warning on "/" (reported by Joe Edmonds) -- Fixed reload file scanning mechanism (submitted by Brian Holmes) -- Added use_data_dumper_xs Config.pm item, which checks whether -Data::Dumper::Dumpxs is available. (reported by Pelle Johnsen) -- Added "code examples" section to README + - New integrated request API. $m replaces $REQ as the global variable + containing the current request object. All mc_ commands have been + incorporated into $m methods: mc_comp becomes $m->comp, mc_file + becomes $m->file, etc. The old commands still work for now. + - The utility bin/convert0.8.pl converts existing components to use + the new request API. + - Autohandler methods have been renamed: from mc_auto_next to + $m->call_next and mc_auto_comp to $m->fetch_next. This is in + preparation for a more general component inheritance system. + convert0.8.pl handles this change. + - Can now specify multiple component roots in the spirit of @INC. + (suggested by Ewan Edwards and others) + - Simplified HTTP header behavior. Headers are sent at the end of the + request (in batch mode) or just before the first non-whitespace output + (in stream mode). suppress_http_header no longer needed. + - New organization of Component class into subclasses + Component::FileBased and Component::Subcomponent. No outward change. + - Updated object file format. Mason should generally auto-detect + and recompile old object files, but may not catch everything. Try + removing your object directory if errors persist. + - ** mc_suppress_http_header command still exists but does nothing. + In most cases this should not cause a problem. The only + incompatibility is if you have used mc_suppress_http_header to + suppress headers completely (i.e. you don't want Mason to send headers + at all); in this case pass auto_send_headers=>0 to ApacheHandler. + - Output mode parameter was moved from ah->output_mode to + interp->out_mode, to make it independent of mod_perl. + ah->output_mode still works. + - New in-memory code cache keeps track of component usage, and + discards the most infrequently used components as needed. You can + specify the cache size with interp->max_code_cache_size. + - ** Eliminated the now unnecessary interp->code_cache_mode. + - ** Eliminated the "source references" optimization, a common source of + bugs, no longer needed with the new code cache. + - Allow arguments to be accessed via @_ as in regular subroutines; no + longer required to be in hash form. (suggested by Ken Williams) + - Added $m->scomp, which returns the output of the component call + instead of printing it. This is a cleaner replacement for the STORE + parameter, which still works but is no longer officially documented. + - Added $m->flush_buffer, which forces the buffer to be sent to the + client when in batch mode. + - Added $m->caller_args, which returns the argument list for any point + in the stack. (suggested by Lee Semel) + - Added $m->decline, which passes control to the next dhandler. + (suggested by Chuck O'Donnell) + - Augmented $m->cache_self to cache return values as well as output. + (suggested by Jon Frisby) + - Changed data cache filenames from colon-separated to url-encode + style for Win32 compatibility. (submitted by Ken Williams) + - Added improved, separate session_handler.pl for session handling. + - ** mc_comp_source no longer works for non-existent components. + - ** Removed mc_date legacy command. + - Many new test scripts. + - Added warnings about using Mason with mod_perl DSO. + - Added more site configuration examples to Admin.pod. + - Split object parameter methods (interp->comp_root, etc.) into + read/write and read-only as appropriate. + - Fixed request stack corruption when die() or error from one + component is caught by another component's eval. + - Fixed doc_root / comp_root mismatch on case-insensitive O/S. + (reported by John Arnold) + - Fixed "directory not absolute" warning on "/" (reported by Joe Edmonds) + - Fixed reload file scanning mechanism (submitted by Brian Holmes) + - Added use_data_dumper_xs Config.pm item, which checks whether + Data::Dumper::Dumpxs is available. (reported by Pelle Johnsen) + - Added "code examples" section to README 0.72 October 15, 1999 -- Eliminated long-standing infinite-block bug when POSTing to a -non-existent URL -- Fixed "keys" cache action which never worked as documented -(submitted by Scott Straley) -- Fixed source references on Win32 platforms by using text mode when -reading object file (submitted by Michael Shulman) -- Fixed various methods in FakeApache -- Remove final slash from system paths (component root, etc.) and -check that those paths are absolute -- Fixed all-text subcomponents, by bypassing the pure-text -optimization -- Quoted all hash strings in object file to reduce "Ambiguous use -of ..." warnings (suggested by Paul Schilling) -- Replaced */* with default-handler as recommended way to bypass Mason -(suggested by Dirk Koopman) -- Removed defunct pure text section in Administrators Guide (reported -by Michael Shulman) + - Eliminated long-standing infinite-block bug when POSTing to a + non-existent URL + - Fixed "keys" cache action which never worked as documented + (submitted by Scott Straley) + - Fixed source references on Win32 platforms by using text mode when + reading object file (submitted by Michael Shulman) + - Fixed various methods in FakeApache + - Remove final slash from system paths (component root, etc.) and + check that those paths are absolute + - Fixed all-text subcomponents, by bypassing the pure-text + optimization + - Quoted all hash strings in object file to reduce "Ambiguous use + of ..." warnings (suggested by Paul Schilling) + - Replaced */* with default-handler as recommended way to bypass Mason + (suggested by Dirk Koopman) + - Removed defunct pure text section in Administrators Guide (reported + by Michael Shulman) 0.71 September 14, 1999 -- Logic of top_level_predicate was reversed in 0.7; fixed. -(reported by Tom Hughes, Eric Hammond) -- mc_suppress_http_header(0) was broken in 0.7; fixed. -(reported by Michael Alan Dorman) -- Fixed bug in parser section that determines whether % is at the -beginning of a line. (reported by Tom Hughes) -- Parser no longer inadvertently accepts argument names with -whitespace. (reported by Phillip Gwyn) + - Logic of top_level_predicate was reversed in 0.7; fixed. + (reported by Tom Hughes, Eric Hammond) + - mc_suppress_http_header(0) was broken in 0.7; fixed. + (reported by Michael Alan Dorman) + - Fixed bug in parser section that determines whether % is at the + beginning of a line. (reported by Tom Hughes) + - Parser no longer inadvertently accepts argument names with + whitespace. (reported by Phillip Gwyn) 0.7 September 1, 1999 -- Improved core implementation with two new classes, -HTML::Mason::Request and HTML::Mason::Component. Code is now cleaner -and more scalable, and the new APIs give developers control and -introspection over Mason's inner workings. L{Devel/component and -request objects} -- Added documentation to accommodate new classes: created -Request.pod and Component.pod, and moved component developer's guide -(previously at Components.pod) to Devel.pod to avoid -confusion. L{Devel/component and request objects} -- Object files have changed significantly (they now return a -component object). Pre-0.7 object files will be detected and -automatically updated, unless you are running in reload file mode -in which case you are responsible for generating new object files. -- New <%def> section defines a subcomponent embedded inside a larger -component. This allows repeated code and HTML to be modularized -without affecting the global component namespace. -L{Devel/e<%def_i_name_e>} -- <%args> section now accommodates optional comments for declarations -L{Devel/e<%argse>} -- Improved Perl translation of <%args> section (submitted by Ken -Williams) -- Autohandler and dhandler file names are now configurable -L{Interp/item_autohandler_name} -- Dhandlers, which formerly worked only in mod_perl mode, now work in -stand-alone mode as well -- Interp::exec is now re-entrant with all request specific information -having been moved to Request class. -- ** Reworked Parser API. parse is now called make_component, has a -simplified set of options, and returns a component object -directly. make is now called make_dirs. L{Parser/item_make_component} -- Source references now read from the object file, cleaner for a -variety of reasons. Preprocess and postprocess now work with source -references. -- Removed obsolete and undocumented Interp::vars and mc_var functions -- Simplified chown/getpwuid usage in handler.pl (submitted by Randal -Schwartz) + - Improved core implementation with two new classes, + HTML::Mason::Request and HTML::Mason::Component. Code is now cleaner + and more scalable, and the new APIs give developers control and + introspection over Mason's inner workings. + - Added documentation to accommodate new classes: created + Request.pod and Component.pod, and moved component developer's guide + (previously at Components.pod) to Devel.pod to avoid + confusion. + - Object files have changed significantly (they now return a + component object). Pre-0.7 object files will be detected and + automatically updated, unless you are running in reload file mode + in which case you are responsible for generating new object files. + - New <%def> section defines a subcomponent embedded inside a larger + component. This allows repeated code and HTML to be modularized + without affecting the global component namespace. + - <%args> section now accommodates optional comments for declarations + - Improved Perl translation of <%args> section (submitted by Ken + Williams) + - Autohandler and dhandler file names are now configurable + - Dhandlers, which formerly worked only in mod_perl mode, now work in + stand-alone mode as well + - Interp::exec is now re-entrant with all request specific information + having been moved to Request class. + - ** Reworked Parser API. parse is now called make_component, has a + simplified set of options, and returns a component object + directly. make is now called make_dirs. + - Source references now read from the object file, cleaner for a + variety of reasons. Preprocess and postprocess now work with source + references. + - Removed obsolete and undocumented Interp::vars and mc_var functions + - Simplified chown/getpwuid usage in handler.pl (submitted by Randal + Schwartz) 0.6.2 August 20, 1999 -- Fixed problem with shared data cache locks over NFS (submitted by -Tom Hughes) -- Fixed mc_auto_comp, which never really worked as documented -- Fixed preloading for directories (submitted by Dennis Watson) -- Added back Utils::get_lock, which is used by content management + - Fixed problem with shared data cache locks over NFS (submitted by + Tom Hughes) + - Fixed mc_auto_comp, which never really worked as documented + - Fixed preloading for directories (submitted by Dennis Watson) + - Added back Utils::get_lock, which is used by content management 0.6.1 July 27, 1999 -- Added warnings to convert-0.6.pl about occasional erroneous -component call syntax conversions (reported by Oleg Bartunov) -- Fixed conversion of <% mc_comp("/foo/$bar") %> (reported by Oleg -Bartunov) -- Fixed cache access under high concurrencies (reported by Oleg -Bartunov) -- Fixed uppercase <%PERL>, broken in 0.6 (reported by Daniel L. Jones) -- Fixed mc_suppress_http_header(0), broken in 0.6 (reported by Jim -Mortko) + - Added warnings to convert-0.6.pl about occasional erroneous + component call syntax conversions (reported by Oleg Bartunov) + - Fixed conversion of <% mc_comp("/foo/$bar") %> (reported by Oleg + Bartunov) + - Fixed cache access under high concurrencies (reported by Oleg + Bartunov) + - Fixed uppercase <%PERL>, broken in 0.6 (reported by Daniel L. Jones) + - Fixed mc_suppress_http_header(0), broken in 0.6 (reported by Jim + Mortko) 0.6 July 16, 1999 -- New <& &> tag provides a more convenient way to call components -inside HTML. mc_comp still works. L{Devel/components that output html} -- The "perl_" prefix has been eliminated from section names: now -simply use <%init>, <%cleanup>, <%args>, etc. The old names still -work. L{Devel/other perl sections} -- The utility bin/convert0.6.pl converts existing components to use -the above new syntax. -- New autohandler feature finally provides an easy way to specify a -common template or behavior for a directory. An autohandler is invoked -just before any top-level components in its directory begins executing. -It can display header/footers, apply a filtering function, set up -globals, etc. A good complement to dhandlers. L{Devel/autohandlers} -- New <%once> section contains code that will be executed once when a -component is loaded. It is useful for defining persistent variables -and named subroutines. L{Devel/e<%oncee>} -- New <%filter> section and mc_call_self command allow you to arbitrarily -filter the output of the current component. L{Devel/filtering} -- New <%text> section allows you to turn off Mason processing for a -particular section of text. L{Devel/e<%texte>} -- Implemented first installation test suite! [modus] -- HEAD optimization: we now automatically abort after headers are sent -on a HEAD request. -- New Parser make() utility traverses a tree of components, compiling -any out-of-date components into object files and reporting errors. -L{Parser/item_make_dirs} -- New mc_comp_source command returns the source filename of this or -any component. L{Commands/item_mc_comp_source_compPath_} -- mc_file now uses current component path by default for relative paths -if no static_file_root defined (suggested by John Landahl) -- Various previewer interface improvements -- Removed link tags in pods documentation due to 5.004 problems -- Took out previewer stub from Mason.pm to eliminate "subroutine -redefined" warning -- Updated makeconfig.pl to prefer GDBM_File, to avoid a bug in -Berkeley DB 1.x -- Cleaned and sped up interp hooks facility -- Stopped substituting control characters for section strings in Parser -[modus] -- Fixed mc_cache 'expire' bug (reported by Aaron Ross) -- Changed ignore_warnings default to ignore "subroutine redefined" -warnings to make <%once> more useful -- Removed defunct Safe code from Parser and defunct ALLOW_HANDLERS -code from Interp -- Added index file to htdocs/ + - New <& &> tag provides a more convenient way to call components + inside HTML. mc_comp still works. + - The "perl_" prefix has been eliminated from section names: now + simply use <%init>, <%cleanup>, <%args>, etc. The old names still + work. + - The utility bin/convert0.6.pl converts existing components to use + the above new syntax. + - New autohandler feature finally provides an easy way to specify a + common template or behavior for a directory. An autohandler is invoked + just before any top-level components in its directory begins executing. + It can display header/footers, apply a filtering function, set up + globals, etc. A good complement to dhandlers. + - New <%once> section contains code that will be executed once when a + component is loaded. It is useful for defining persistent variables + and named subroutines. + - New <%filter> section and mc_call_self command allow you to arbitrarily + filter the output of the current component. + - New <%text> section allows you to turn off Mason processing for a + particular section of text. + - Implemented first installation test suite! [modus] + - HEAD optimization: we now automatically abort after headers are sent + on a HEAD request. + - New Parser make() utility traverses a tree of components, compiling + any out-of-date components into object files and reporting errors. + - New mc_comp_source command returns the source filename of this or + any component. + - mc_file now uses current component path by default for relative paths + if no static_file_root defined (suggested by John Landahl) + - Various previewer interface improvements + - Removed link tags in pods documentation due to 5.004 problems + - Took out previewer stub from Mason.pm to eliminate "subroutine + redefined" warning + - Updated makeconfig.pl to prefer GDBM_File, to avoid a bug in + Berkeley DB 1.x + - Cleaned and sped up interp hooks facility + - Stopped substituting control characters for section strings in Parser + [modus] + - Fixed mc_cache 'expire' bug (reported by Aaron Ross) + - Changed ignore_warnings default to ignore "subroutine redefined" + warnings to make <%once> more useful + - Removed defunct Safe code from Parser and defunct ALLOW_HANDLERS + code from Interp + - Added index file to htdocs/ 0.5.1 June 10, 1999 -- Removed leftover "use File::Recurse" in ApacheHandler.pm [modus] -- Added empty test target to FAQ Makefile, required on certain -architectures [modus] + - Removed leftover "use File::Recurse" in ApacheHandler.pm [modus] + - Added empty test target to FAQ Makefile, required on certain + architectures [modus] 0.5 June 3, 1999 -- Removed memory leak associated with "return sub { ... }" -- Overhauled Config.pm, now maintains previous configuration when -upgrading Mason (suggested by Patrick Kane) -- Made filename processing compatible with Windows 32 (suggested by -Rafael Weinstein) -- Removed requirement of File::Tools/File::Recurse, replaced with -standard File::Find -- Switched output to STDOUT from $r->print, to facilitate chaining -with other mod_perl tools -- Switched to standard argument processing code, now handles -multi-part forms [modus] -- New preprocess and postprocess Parser options allow you to apply -auomatic modifications to components, before or after they are compiled -into code. (submitted by Philip Gwyn) L{Parser/item_preprocess} -- New in_package Parser option allows components to live in any -package. (submitted by Philip Gwyn) L{Parser/in_package} -- Added documentation about using globals in components, and -some new facilities: Parser option 'allow_globals' and Interp -method 'set_global'. L{Admin/using global variables} -- Documented how to save persistent user information with Apache::Session [modus] -L{Admin/persistent user sessions} -- ** Changed behavior of reload_file mode to read directly from object -files. If you use reload files, you're now responsible for -creating object files. [mschmick] -- Reduced number of file stats when loading components [mschmick] -- New apache_status_title ApacheHandler option makes it possible to -use Mason's perl-status page with multiple ApacheHandler objects. -(submitted by Philip Gwyn) L{ApacheHandler/item_apache_status_title} -- Upgraded FakeApache/debug files to work with mod_perl 1.19 -- New sections in Component Developer's Guide explain how debug files -work and some caveats about when they don't. L{Admin/debugging} -- Mentioned mailing lists, masonhq.com web site, and FAQ in the -documentation and README -- Improved documentation on how to integrate images and non-Mason -hierarchies with Mason. L{Mason/item_Do_you_plan_to_intermix_images_a} -- Differentiated mc_cache and mc_cache_self in the commands manual -(suggested by Tom Hukins) -- Increased discouraging of SDBM, improved warnings when cache store -fails (suggested by Patrick Kane) -- Fixed HTML documentation to work with IE (suggested by Fen Lebalme) -- Fixed infinite loop in ApacheHandler dhandler search (submitted by -Chuck O'Donnell) -- Documented Parser method parse(), which allows you to compile -components outside of a Interp environment. L{Parser/item_parse} -- New mc_cache actions 'expire' and 'keys' help you peer into data cache -files and expire selected keys. L{Devel/item_By_Explicit_Action} -- Corrected Parser to properly handle \ in components (submitted by -Ken Williams) -- ** Took Preview out of Mason.pm; ApacheHandler used only if mod_perl -environment. If you use the previewer, you now have to explicitly "use -HTML::Mason::Preview" in your handler.pl. -- Improved documentation about argument/GET/POST handling (suggested -by Ken Williams) L{Devel/passing_parameters} -- Added cache option 'busy_lock', which prevents multiple processes -from recomputing an expire cache value at the same time. (suggested -by Dennis Watson) L{Devel/busy_locks} -- Inserted work-around for Perl 5.005 $r scoping bug (submitted by -Rafael Weinstein) -- Fixed "new CGI" example in Components.pod (submitted by Austin Lin) -- Fixed "return if content-type..." line in handler.pl and Mason.pod -(submitted by Patrick Kane) -- Added CREDITS file + - Removed memory leak associated with "return sub { ... }" + - Overhauled Config.pm, now maintains previous configuration when + upgrading Mason (suggested by Patrick Kane) + - Made filename processing compatible with Windows 32 (suggested by + Rafael Weinstein) + - Removed requirement of File::Tools/File::Recurse, replaced with + standard File::Find + - Switched output to STDOUT from $r->print, to facilitate chaining + with other mod_perl tools + - Switched to standard argument processing code, now handles + multi-part forms [modus] + - New preprocess and postprocess Parser options allow you to apply + auomatic modifications to components, before or after they are compiled + into code. (submitted by Philip Gwyn) + - New in_package Parser option allows components to live in any + package. (submitted by Philip Gwyn) + - Added documentation about using globals in components, and + some new facilities: Parser option 'allow_globals' and Interp + method 'set_global'. + - Documented how to save persistent user information with Apache::Session [modus] + - ** Changed behavior of reload_file mode to read directly from object + files. If you use reload files, you're now responsible for + creating object files. [mschmick] + - Reduced number of file stats when loading components [mschmick] + - New apache_status_title ApacheHandler option makes it possible to + use Mason's perl-status page with multiple ApacheHandler objects. + (submitted by Philip Gwyn) + - Upgraded FakeApache/debug files to work with mod_perl 1.19 + - New sections in Component Developer's Guide explain how debug files + work and some caveats about when they don't. + - Mentioned mailing lists, masonhq.com web site, and FAQ in the + documentation and README + - Improved documentation on how to integrate images and non-Mason + hierarchies with Mason. + - Differentiated mc_cache and mc_cache_self in the commands manual + (suggested by Tom Hukins) + - Increased discouraging of SDBM, improved warnings when cache store + fails (suggested by Patrick Kane) + - Fixed HTML documentation to work with IE (suggested by Fen Lebalme) + - Fixed infinite loop in ApacheHandler dhandler search (submitted by + Chuck O'Donnell) + - Documented Parser method parse(), which allows you to compile + components outside of a Interp environment. + - New mc_cache actions 'expire' and 'keys' help you peer into data cache + files and expire selected keys. + - Corrected Parser to properly handle \ in components (submitted by + Ken Williams) + - ** Took Preview out of Mason.pm; ApacheHandler used only if mod_perl + environment. If you use the previewer, you now have to explicitly "use + HTML::Mason::Preview" in your handler.pl. + - Improved documentation about argument/GET/POST handling (suggested + by Ken Williams) + - Added cache option 'busy_lock', which prevents multiple processes + from recomputing an expire cache value at the same time. (suggested + by Dennis Watson) + - Inserted work-around for Perl 5.005 $r scoping bug (submitted by + Rafael Weinstein) + - Fixed "new CGI" example in Components.pod (submitted by Austin Lin) + - Fixed "return if content-type..." line in handler.pl and Mason.pod + (submitted by Patrick Kane) + - Added CREDITS file 0.4 January 06, 1999 -- Added support for using Perl profiler in conjunction with debug -files -- Fixed bug in previewer HTML trace introduced in 0.3 -- Created Perl status section for Mason -- Removed most warnings when PerlWarn is on (suggested by Philip Gwyn) -- Added code_cache_mode parameter to control caching of components in -memory -- Fixed mismatch between documentation and code with regards to cache -store events in system log. The real event name is CACHE_WRITE. -- Changed system logging to use canonical server name when recording -URI -- Field access methods inside Mason objects are now handled with -custom subroutines instead of generic AUTOLOAD, improving performance -- Information for debug file is no longer collected if debug mode is -"none" -- Code to decline images and other non-text requests was placed in -default handler.pl and described in documentation (suggested by -Patrick Kane) -- Fixed server header output from debug files (suggested by Ewan Edwards) -- Created a Mason bundle -- Created a CPAN "alias" from Apache::Mason to HTML::Mason + - Added support for using Perl profiler in conjunction with debug + files + - Fixed bug in previewer HTML trace introduced in 0.3 + - Created Perl status section for Mason + - Removed most warnings when PerlWarn is on (suggested by Philip Gwyn) + - Added code_cache_mode parameter to control caching of components in + memory + - Fixed mismatch between documentation and code with regards to cache + store events in system log. The real event name is CACHE_WRITE. + - Changed system logging to use canonical server name when recording + URI + - Field access methods inside Mason objects are now handled with + custom subroutines instead of generic AUTOLOAD, improving performance + - Information for debug file is no longer collected if debug mode is + "none" + - Code to decline images and other non-text requests was placed in + default handler.pl and described in documentation (suggested by + Patrick Kane) + - Fixed server header output from debug files (suggested by Ewan Edwards) + - Created a Mason bundle + - Created a CPAN "alias" from Apache::Mason to HTML::Mason 0.3 November 25, 1998 -- Added optional system logging of page requests, cache activity, -component loading -- Deny directory requests so that index files will work in mod_perl 1.16+ -- Removed reliance on several external packages (Date::Manip, -CGI::Base, URI::Escape). This should reduce the amount of memory taken -up by Mason processes and make Mason easier to install. -- ** Due to the removal of Date::Manip, the mc_date command will no -longer work unless Date::Manip is explicitly used, and the syntax for -the expire_at cache parameter and the Interp current_time parameter -have changed. -- Added parser taint_check flag which allows Mason to work with taint -checking on (suggested by Randal Schwartz) -- Added warning messages when returning 404 from ApacheHandler -- Improved cache locking with the use of separate lock files -- Makefile.PL checks for required and optional packages -- Documentation fixes and improvements -- Removed obsolete and undocumented commands from Commands.pm -- Failure to write debug file is now a warning rather than fatal error -- Augmented "no configuration for previewer port" error -- Fixed $interp->exec to be able to return list -- Changed parser to remove ctrl-Ms instead of replacing with spaces -- Always call http_header hook, not just at top level -- Added global IN_DEBUG_FILE flag -- Renamed mc_call_stack to mc_comp_stack to match documentation + - Added optional system logging of page requests, cache activity, + component loading + - Deny directory requests so that index files will work in mod_perl 1.16+ + - Removed reliance on several external packages (Date::Manip, + CGI::Base, URI::Escape). This should reduce the amount of memory taken + up by Mason processes and make Mason easier to install. + - ** Due to the removal of Date::Manip, the mc_date command will no + longer work unless Date::Manip is explicitly used, and the syntax for + the expire_at cache parameter and the Interp current_time parameter + have changed. + - Added parser taint_check flag which allows Mason to work with taint + checking on (suggested by Randal Schwartz) + - Added warning messages when returning 404 from ApacheHandler + - Improved cache locking with the use of separate lock files + - Makefile.PL checks for required and optional packages + - Documentation fixes and improvements + - Removed obsolete and undocumented commands from Commands.pm + - Failure to write debug file is now a warning rather than fatal error + - Augmented "no configuration for previewer port" error + - Fixed $interp->exec to be able to return list + - Changed parser to remove ctrl-Ms instead of replacing with spaces + - Always call http_header hook, not just at top level + - Added global IN_DEBUG_FILE flag + - Renamed mc_call_stack to mc_comp_stack to match documentation 0.2 August 21, 1998 -- Replaced File::lockf module, which could not port to some systems, -with simple call to flock -- Corrected email address in README -- Fixed undeclared variable bug in preview component -- The previewer did not work in basic versions of Perl 5.004 due to an -eval scoping bug. A workaround was put in place. -- Fixed expire_if cache option to pass correct argument to provided -subroutine -- Empty argument section no longer parsing incorrectly -- Took out directory names from manifest which were causing errors on -install -- Debug file is no longer prepared when debug_mode is "none" -- Use Preview.pm in Mason.pm + - Replaced File::lockf module, which could not port to some systems, + with simple call to flock + - Corrected email address in README + - Fixed undeclared variable bug in preview component + - The previewer did not work in basic versions of Perl 5.004 due to an + eval scoping bug. A workaround was put in place. + - Fixed expire_if cache option to pass correct argument to provided + subroutine + - Empty argument section no longer parsing incorrectly + - Took out directory names from manifest which were causing errors on + install + - Debug file is no longer prepared when debug_mode is "none" + - Use Preview.pm in Mason.pm 0.1 July 22, 1998 -- Original version; created by h2xs 1.18 + - Original version; created by h2xs 1.18