Class::MakeMethods::Docs::Changes - History of Class::MakeMethods |
Class::MakeMethods::Docs::Changes - History of Class::MakeMethods
Revision history for Class::MakeMethods.
get_declarations()
and associated documentation from Standard module to superclass.
Added support for defaults with -- and -param to Standard get_declarations().
Released to CPAN as Class-MakeMethods-1.009.tar.gz.
Added Emulator::accessors and compatibility tests.
Minor documentation improvements.
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.
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.
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.
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.
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.)
Added Standard::Universal:alias.
Renamed Utility::TakeName to Emulator.
Split Template and Emulator packages into their own distributions.
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...
Added Composite::Inheritable:hook and matching test. Added Composite->CurrentResults method to easily access, update composite method results.
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 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).
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.
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.
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.)
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.
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.
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.
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.
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.
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.
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''.
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.
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.
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.
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.
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.
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
Assorted cleanup of syntax and documentation.
Moved Hash, Static, and Index implementations into separate packages.
Folded in some misc improvements from Class::MethodMaker 1.0.
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:
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.
Class::MakeMethods::Docs::Changes - History of Class::MakeMethods |