/09/05
Adjusted layout of test directories in another attempt to solve a MakeMaker/shell-glob issue on Windows that was preventing make test from running correctly.

Removed Template::PseudoHash, since this package never really worked, as pointed out by a question from Mike Castle. Management of array-based objects can be handled by any of the existing ::Array subclasses, and support for pseudo-hashes would not provide any useful new capabilities.

Added support for ``Template::Universal:forward_methods -delegate'' and ``Template::Generic:object --soft_delegate'' based on a suggestion from Peter Chen. Extended behavior of Template -subs handling to make it easy to add such functionality in the future.

Released to CPAN as Class-MakeMethods-1.008.tar.gz.

/09/02
Adjusted DESTROY behavior of Template::InsideOut and cleaned up documentation.

/09/01
Made Template definitions automatically import their class's generic
definitions, if present. This eliminates the need for Generic
subclasses to explicitly redeclare every method it inherits, and
should obviate the ``missing declaration'' problems referenced below.

Updated the names of several Template subclasses, with stubs at
the old names for backwards compatibility: Flyweight becomes
InsideOut, Static becomes Global, and Struct becomes Array.

Added Template::Inheritable and basic tests for it.

Eliminated use of legacy Test.pm from remaining tests, except for
MethodMaker emulation.

Rearranged test directories in an effort to avoid a reported bug
with the test path of t/*/*.t under Windows.

Released to CPAN as Class-MakeMethods-1.007.tar.gz.

/08/27
Added section to Class::MakeMethods/EXTENDING documentation based
on question from Terrence Brannon.

Added new test scripts from Class-MethodMaker-1.08, although we
don't yet pass them. In particular, I need to add support for the
new method types added in 1.04: tie_scalar, tie_list, object_tie_list,
object_tie_hash

Also need to compare against the changes included in Class-MethodMaker-1.09 and 1.10, which don't seem to include any new test code, but do include functionality changes.

/12/12
Re-integrated Template and Emulator packages; the separate distribution
turned out to be a hastle rather than a convenience. However, in
order to keep test scripts for each subsystem separate, I'm now
using a Makefile.PL attribute to specify a two-level deep directory
tree of test scripts; I hope this doesn't break on Windows...

Tried to improve documentation, based on feedback from Jared Rhine.
Expunged ReadMe.pod. Extracted method catalogs into Catalog.pod.
Moved examples to new Example.pod, although that underlines how
few examples there are.

Adjusted the hash and array methods in the Standard::* and Composite::*
packages to properly accept a set-contents call with a single
reference argument, and to return contents rather than ref in list
context.

Fixed a subtle bug in a test script inherited from Class::MethodMaker:
4_Template_hash_hash_array.t and 7_MethodMaker_hash_of_lists.t both
relied on ``keys %hash'' returning the keys in a particular order,
which *almost* always worked, but caused failures on one or more
Perl version/platform combinations.

Various documentation tweaks, including feedback from Adam Spiers:
Adjusted documentation to downplay Basic::* modules as a starting
point, in favor of Standard::* ones. Trimmed out some duplicated
documentation in favor of more ``See L<...>'' links. Adjusted
documentation of *::Inheritable packages in an attempt to clarify
the way in which the inheritance tree is searched for a value.

Factored out common code from Standard::Inheritable and
Composite::Inheritable to new module, Utility::Inheritable. Factored
out common code from Standard::Hash and Standard::Array to new
module, Utility::ArraySplicer. Factored out common code from
Template::Universal to new module, Utility::Ref. Renamed
Emulator::TakeName to Utility::TakeName (this is internal use only,
so there should be no public impact).

To date, this module has been circulated under several provisional
names: it was originally floated as a possible version-2 rewrite
of Class::MethodMaker, then renamed to Class::Methods when it forked
from that project, and then briefly to Class::MethodGenerator.
(Note that it can be surprisingly difficult to comply with both of
these the perlmodlib manpage guidelines: ``To be portable each component of
a module name should be limited to 11 characters. [...] Always
try to use two or more whole words.'') In the end, I selected
Class::MakeMethods, as it is two whole words, and is reminiscent
of Class::MethodMaker without being confusing (I hope!), and I
believe this issue is now settled.

Standardized syntax for global options; renamed -implementation to
-MakerClass and -target_class to -TargetClass. Moved $TargetClass
and other context information into %CONTEXT with _context accessor.
Added ForceInstall.

Completed re-simplification of build directories; we're back to a
single Makefile, which avoids a warning in P5.6.0.

Added Attribute interface for use with P5.6 and later, based on
Attribute::Handlers.

Separated source files into separate directories with distinct
Makefiles and test hierarchies. This should clarify the boundaries
between the core method-generation code, the common constructor/accessor
methods, and the various emulator and experimental packages.

Folded various pod files together into main module's inline
documentation. Updated catalog of existing implementations in
documentation. Added pointers to some tutorials and books which
discuss Class::Methods.