summaryrefslogtreecommitdiff
path: root/lib/Class/MakeMethods/Docs/Changes.pod
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Class/MakeMethods/Docs/Changes.pod')
-rw-r--r--lib/Class/MakeMethods/Docs/Changes.pod661
1 files changed, 661 insertions, 0 deletions
diff --git a/lib/Class/MakeMethods/Docs/Changes.pod b/lib/Class/MakeMethods/Docs/Changes.pod
new file mode 100644
index 0000000..8b01f0a
--- /dev/null
+++ b/lib/Class/MakeMethods/Docs/Changes.pod
@@ -0,0 +1,661 @@
+=head1 NAME
+
+Class::MakeMethods::Docs::Changes - History of Class::MakeMethods
+
+=head1 SYNOPSIS
+
+Revision history for Class::MakeMethods.
+
+=head1 CHANGES
+
+=head2 Version 1.010
+
+=over 4
+
+=item 2004/09/06
+
+Moved get_declarations() and associated documentation from Standard module to superclass.
+
+=item 2004/09/03
+
+Developed test.pl test harness with recursive file search to fix Windows "command line too long" errors.
+
+=item 2004/09/01
+
+Moved Template::TextBuilder and Template::DiskCache into Utility:: namespace.
+
+Added support for defaults with -- and -param to Standard get_declarations().
+
+=item 2004/08/12
+
+Began testing and integrating tied-value patches from Dominique Dumont.
+
+=item 2004/04/27
+
+Added method types to Evaled::Hash.
+
+=item 2004/04/23
+
+Added skeleton of a new Evaled::Hash class.
+
+=back
+
+=head2 Version 1.009
+
+=over 4
+
+=item 2003/09/25
+
+Added Emulator::mcoder and compatibility tests.
+
+Released to CPAN as Class-MakeMethods-1.009.tar.gz.
+
+=item 2003/09/22
+
+Added support for lvalue methods to Template and Template::Generic. Added a few tests to demonstrate they're working. Added an example to Docs::Examples.
+
+Added Emulator::accessors and compatibility tests.
+
+Minor documentation improvements.
+
+=back
+
+=head2 Version 1.008
+
+=over 4
+
+=item 2003/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.
+
+=item 2003/09/02
+
+Adjusted DESTROY behavior of Template::InsideOut and cleaned up documentation.
+
+=back
+
+=head2 Version 1.007
+
+=over 4
+
+=item 2003/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.
+
+=item 2003/08/27
+
+Added section to Class::MakeMethods/EXTENDING documentation based
+on question from Terrence Brannon.
+
+=item 2003/02/07
+
+Fixed missing declaration of Template::Hash:instance, reported via RT.
+
+=back
+
+=head2 Version 1.006
+
+=over 4
+
+=item 2003/01/26
+
+Additional documentation touch-ups. Moved miscellaneous POD files into the Docs directory.
+
+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.
+
+=item 2002/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...
+
+Fixed possible "use of undefined as a reference" problem in
+Standard::*::array method generators, reported by Jared Rhine.
+
+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.
+
+=back
+
+
+=head2 Version 1.005
+
+=over 4
+
+=item 2002/06/06
+
+Added Autoload interface.
+
+Modifed Attribute interface to add "inheritable" default logic for
+Maker class parameter. (Suggested by Malcolm Cook.)
+
+Fixed typo in documentation for Standard::Universal. (Spotted by
+Malcolm Cook.)
+
+=back
+
+
+=head2 Version 1.004
+
+=over 4
+
+=item 2002/03/23
+
+Released to CPAN as Class-MakeMethods-1.004.tar.gz.
+
+=item 2002/03/16
+
+Allow double-colons between package name and method generator name.
+
+=item 2002/02/19
+
+Fixed related use of undef in Standard::*:hash methods.
+
+=item 2002/02/14
+
+Adjusted Standard::*:hash methods to avoid assuming that the hashref
+already exists.
+
+=item 2002/02/07
+
+Added missing *_reset => clear to Template number --counter interface.
+
+=item 2002/02/02
+
+Adjusted error message in Utility::ArraySplicer
+
+=item 2002/01/26
+
+Applied small documentation corrections suggested by Adam Spiers.
+
+Added Standard::Universal:alias.
+
+=back
+
+=head2 Version 1.003
+
+=over 4
+
+=item 2002/01/24
+
+Folded "Getting Started Guide" POD into main module documentation.
+
+Renamed Utility::TakeName to Emulator.
+
+Split Template and Emulator packages into their own distributions.
+
+B<Please Note:> This means that to fully upgrade you must retrieve
+all three of these files:
+
+ Class-MakeMethods-1.003.tar.gz
+ Class-MakeMethods-Template-1.003.tar.gz
+ Class-MakeMethods-Emulator-1.003.tar.gz
+
+Of course, if you're not using the Template or Emulator classes,
+there's no need to download them...
+
+
+=item 2002/01/21
+
+Started bumping sub-version numbers and not using sub-sub-versions,
+to shorten distribution names and more closely match standard
+practice.
+
+Added Composite::Inheritable:hook and matching test. Added
+Composite->CurrentResults method to easily access, update composite
+method results.
+
+=back
+
+=head2 Version 1.000.*
+
+=over 4
+
+=item v1.000.16 - 2002/01/21
+
+Released to CPAN as v1.000.016.
+
+=item v1.000.16 - 2002/01/20
+
+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.
+
+=item v1.000.16 - 2002/01/14
+
+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.
+
+
+=item v1.000.15 - 2002/01/14
+
+Released to CPAN as v1.000.015.
+
+=item v1.000.15 - 2002/01/12
+
+Renamed Basic::Static to Basic::Global for consistency with Standard
+and Composite. Hopefully, there aren't many users of this module
+yet; please accept my apologies if this breaks your code.
+
+Eliminated "local @_ = ...", which appears to cause a scoping
+problem on Perl 5.6. Thanks to Adam Spiers for a thorough bug
+report. (See http://www.perlmonks.org/index.pl?node_id=138370 for
+details.)
+
+Extended Template::Generic to support "array --get_set_ref" method
+style requested by Adam Spiers.
+
+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 LE<lt>...E<gt>" 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).
+
+
+=item v1.000.15 - 2001/12/01
+
+Adjusted Template::Universal's code for _CALL_METHODS_FROM_HASH_,
+to ensure that method/arg pairs are called in order they were passed
+in.
+
+=item v1.000.15 - 2001/07/04, 2001/07/19
+
+Minor additions to documentation of various method types.
+
+
+=item v1.000.14 - 2001/07/01
+
+Released as v1.000.014.
+
+
+=item v1.000.14 - 2001/06/25, 2001/06/29, 2001/07/01
+
+Removed Makefile rule from Makefile.PL to avoid warnings when used
+with recent versions of ExtUtils::MakeMaker, which also define a
+similar rule. (Based on bug report from Ron Savage.)
+
+Fixed test failure for machines with P5.6 but no Attribute::Handlers.
+(Reported by Ron Savage, Jay Lawrence.)
+
+Added Template::Flyweight:string_index. (But still needs test
+script.)
+
+Added Standard::Universal. (But still needs test scripts.)
+
+Minor touch-ups to ReadMe and Guide documentation.
+
+
+=item v1.000.13 - 2001/05/16, 2001/05/18, 2001/05/20, 2001/06/02, 2001/06/22, 2001/06/24
+
+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 L<perlmodlib> 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.
+
+Renamed "Simple" subclasses to "Basic". Added documentation and
+initial tests.
+
+Added Standard subclasses with parameter parsing and more powerful
+accessors.
+
+Modified Emulator::Struct to use Standard::* methods. Found struct
+test from P5.7, and added auto_init functionality to match.
+
+Added Composite::* subclasses.
+
+Added Emulator::AccessorFast.
+
+Added Class::MakeMethods::Guide with introduction and examples.
+
+Continued clean-up effort on Template documentation. Renamed Template
+"attributes" to "method parameters" to avoid confusion with Perl
+attributes. Retitled Template naming rules from "templates" to
+"interfaces".
+
+Changed initialization code expressions of Template::Class in hopes
+of P5.6.1 compatibility. (Problem reported by M Schwern.)
+
+Added 'Template::Generic:new --and_then_init' based on feedback
+from Jay Lawrence.
+
+=back
+
+=head2 Early 1.000 versions
+
+=over 4
+
+=item v1.000.12 - 2001/05/14
+
+Renamed module to Class::MethodGenerator, although naming questions
+remain.
+
+Moved Template subclasses into Template::* namespace. Simplified
+build directory and makefile structure.
+
+Changed initialization code expressions of Template::PackageVar,
+ClassVar for P5.6.0 compatibility. (Reported by M Schwern.)
+
+
+=item v1.000.11 - 2001/05/07, 2001/05/12
+
+Eliminated Bundle file. Moved general documentation to cm_base.
+
+Renamed Class::Methods::Base to Class::Methods::Generator.
+
+Extracted code for Template declarations to new Class::Methods::Template
+module. Extracted disk-caching to new Template::DiskCache module.
+Moved TextBuilder into the Template:: tree.
+
+Moved _namespace_capture code to new package
+Class::Methods::Emulator::TakeName.
+
+Added Simple::Hash subclass.
+
+
+=item v1.000.10 - 2001/04/26, 2001/05/02, 2001/05/04
+
+Moved _namespace_capture and _namespace_release to Class::Methods::Base.
+
+Additional doc tweakage. Moved ReadMe documentation to
+Bundle::ClassMethods. Merged Extending documentation into Base.
+
+Removed spurious uses of -default => 'default' in templates.
+
+Added new ClassInherit subclass and Emulator::Inheritable.
+
+Expunged Index subclass in favor of boolean_index and string_index
+types on Generic.
+
+Moved Struct:builtin_isa type to new package, StructBuiltin.
+
+Refactored code templating function as Class::Methods::Base::TextBuilder.
+
+
+=item v1.000.9 - 2001/03/24
+
+Reversed sense of - and --, as it was in 1.000.1.
+
+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.
+
+
+=item v1.000.8 - 2001/01/19
+
+Following receipt of a suggestion to fork from the maintainer of
+Class::MethodMaker, renamed packge from Class::MethodMaker v2.0 to
+Class::Methods v1.000.
+
+Adjusted documentation to reflect fork, although additional cleanup
+is still needed.
+
+Moved backward compatibility to Emulator::MethodMaker subclass.
+
+Added Generic -compatibility array index_* and hash_of_arrays *_last
+and *_set methods to match changes in Class::MethodMaker v1.02.
+Added Emulator::MethodMaker support for the '-static' flag. The
+emulator now completely satisfies the enclosed test suites, from
+Class::MethodMaker v0.92 and v1.02.
+
+
+=item v1.000.7 - 2001/01/05, 2001/01/06, 2001/01/07
+
+Moved core code and internal code to Internals.pm. MethodMaker.pm
+now contains only some require statements and the general user
+guide documentation.
+
+Moved ReadMe.pod, Changes.pod, and ToDo.pod into MethodMaker
+directory. Separated Catalog.pod, Extending.pod, RelatedModules.pod.
+
+Included version 1 docs as Class::Methods::OriginalDocs; minor
+revisions for clarity.
+
+Renamed Package subclass to PackageVar, Class to ClassVar.
+
+Added Emulation::Struct subclass.
+
+Added support for shifting targets with make( -target_class =>
+Package, ... ).
+
+Extended ClassName subclass to handle requiring, rather than creating
+subclases.
+
+
+=item v1.000.6 - 2000/12/29, 2001/01/02, 2001/01/04
+
+Restored -sugar import option for compatibility with earlier
+versions.
+
+Added plural names to "Generic:hash -compatibility" to support
+v0.92 usage.
+
+Replaced use of substr(..., 0, 1) with ... =~ s/^-// for P5.004
+compatibility; problem found by Scott Godin.
+
+Copy @_ before splicing and pushing on to it for P5.004 compatibility.
+
+Expunged duplicate lines from Generic.pm's array_of_objects; found
+by Ron Savage.
+
+Renamed Hash.pm's delete and exists behaviors to avoid possible
+run-time import conflict with Generic.pm's behaviors; failure
+reported by Ron Savage.
+
+Added _STATIC_ATTR_{return_value_undefined} attributes to Generic
+string and number to allow overrides of this functionality.
+
+Minor doc touchups and expanded examples section.
+
+
+=item v1.000.5 - 2000/11/28, 2000/12/16, 2000/12/28
+
+Added Universal -warn_calls modifier.
+
+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.
+
+Standardized naming of test scripts.
+
+Can now specify default template name, via -default=>"foo".
+
+
+=item v1.000.4 - 2000/11/22
+
+Separated string, number, and boolean from the Generic scalar
+methods.
+
+Provide _disk_cache to shortcut the lengthy _interpret_text_builder
+process.
+
+Fixes to ClassName implementation.
+
+Change to forward methods to provide better error messages when
+object is empty.
+
+
+=item v1.000.3 - 2000/11/03
+
+Rearranged documentation into separate files in the pod/ directory.
+
+Collapsed find_target_class and make functionality into import;
+moved support for the old functions to the Compatibility module.
+
+Adjusted tests to generally use standard syntax, and not Compatibility
+hooks.
+
+
+=item v1.000.2.1 - 2000/10/23
+
+Moved commonly-accessible information to Universal.
+
+Added block{...} replacement for enhanced behavior templating.
+
+Added modifier mechanism to support -private and -protected.
+
+May need to be able to specify import ordering so that modifiers
+are applied in the right order. This hasn't bit me yet, but it's
+there. Darn.
+
+
+=item v1.000.2 - 2000/10/22
+
+Completed generalization of Generic methods from Static and Hash.
+Rewrote ClassVar and PackageVar to use Generic framework.
+
+Attribute expansion can now substitute values besides name, using
+*{attr}.
+
+Added _diagnostics function and documentation of all failure
+messages.
+
+Added SEE ALSO section to documentation, brief review of Class::*
+on CPAN. Stumbled across Damian Conway's very nice Class::Contract
+module.
+
+Added Scalar and Flyweight implementations.
+
+
+=item v1.000.1.1 - 2000/10/21
+
+Rolled back change from yesterday; can still pick templates like
+'-java'. Allow attributes to be specified as '--foo'=>'bar' or
+'--'=>{foo=>'bar'}
+
+Automated caching for meta-method definition hashes.
+
+Generalized several Static and Hash interfaces into Generic templates.
+Added Static:array and Static:code support.
+
+Allow global -import to set default sources for templates, exprs,
+behaviors.
+
+
+=item v1.000.1 - 2000/10/19
+
+Support inheritance of templates between meta-methods with -import.
+
+Made "template" an attribute, rather than a special state variable.
+
+Allow any attribute to be specified as -foo=>'bar'. Changed
+selection of standard templates from '-java' to '--java'.
+
+Initial support for string-eval behaviors and code_exprs, and
+Generic.pm
+
+
+=item v1.000.0 - 2000/10/14, 2000/10/15
+
+Completed initial pass of full rewrite.
+
+Assorted cleanup of syntax and documentation.
+
+Moved Hash, Static, and Index implementations into separate packages.
+
+
+=item v0.9.3 - 2000/09/30
+
+Refactored subclass_name and class_registry.
+
+Folded in some misc improvements from Class::MethodMaker 1.0.
+
+
+=item v0.97x - 2000/08/04 to 2000/08/13
+
+Forked from Class::MethodMaker 0.96. Substantial rewrite started
+
+Created build_meta_method and refactored many methods to use it.
+
+Added new_hash, hash_init, new_from_prototype.
+
+Extended arg format. Added -template=>behavior_name. Added support
+for array-of-names arguments.
+
+Performance tuning. Additional refactoring to support AutoSplit
+functionality.
+
+Also folded in some older changes and additions from Evolution's
+internal collection of MethodMaker subclasses:
+
+=back
+
+=head2 Class::MethodMaker::Extensions
+
+Change notes from unreleased collection of extensions to Class::MethodMaker that were later folded into Class::MakeMethods:
+
+ 2000/01/12 Added set_foo, clear_foo to class_var hashes.
+ 1999/07/27 Added subclass_name.
+ 1999/04/15 Changed class_var to use symbol table lookups, not eval "".
+ 1999/04/05 Changed determine_once to check again if undefined.
+ 1999/03/25 Added singleton method.
+ 1998/09/18 Finished integration of class_registry handlers.
+ 1998/07/31 Added class_var and classnames handlers.
+ 1998/06/12 Added lookup handlers.
+ 1998/05/09 Created no_op and determine_once method groups.
+
+=cut