Revision history for HTML::Mason.

An HTML version of this file, complete with links to documentation, is
available at http://www.masonhq.com/changes.html.

** denotes an incompatible change

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. 

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)

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)

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.

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.
    - 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.

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.

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.
    - 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

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.

0.87  May 24, 2000

    - 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)

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.
    - ** 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)

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.
    - 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, 2000

    - 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, 2000

    - 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, 2000

    - 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, 2000

    - 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, 2000

    - 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, 2000

    - 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, 2000
    - 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, 2000
    - 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, 2000
    - 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, 1999
    - 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, 1999
    - 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, 1999
    - Original version; created by h2xs 1.18
