1MakeMethods::Docs::ChanUgseesr(3C)ontributed Perl DocumeMnatkaetMieotnhods::Docs::Changes(3)
2
3
4

NAME

6       Class::MakeMethods::Docs::Changes - History of Class::MakeMethods
7

SYNOPSIS

9       Revision history for Class::MakeMethods.
10

CHANGES

12   Version 1.010
13       2004/09/06
14           Moved get_declarations() and associated documentation from Standard
15           module to superclass.
16
17       2004/09/03
18           Developed test.pl test harness with recursive file search to fix
19           Windows "command line too long" errors.
20
21       2004/09/01
22           Moved Template::TextBuilder and Template::DiskCache into Utility::
23           namespace.
24
25           Added support for defaults with -- and -param to Standard
26           get_declarations().
27
28       2004/08/12
29           Began testing and integrating tied-value patches from Dominique
30           Dumont.
31
32       2004/04/27
33           Added method types to Evaled::Hash.
34
35       2004/04/23
36           Added skeleton of a new Evaled::Hash class.
37
38   Version 1.009
39       2003/09/25
40           Added Emulator::mcoder and compatibility tests.
41
42           Released to CPAN as Class-MakeMethods-1.009.tar.gz.
43
44       2003/09/22
45           Added support for lvalue methods to Template and Template::Generic.
46           Added a few tests to demonstrate they're working. Added an example
47           to Docs::Examples.
48
49           Added Emulator::accessors and compatibility tests.
50
51           Minor documentation improvements.
52
53   Version 1.008
54       2003/09/05
55           Adjusted layout of test directories in another attempt to solve a
56           MakeMaker/shell-glob issue on Windows that was preventing make test
57           from running correctly.
58
59           Removed Template::PseudoHash, since this package never really
60           worked, as pointed out by a question from Mike Castle. Management
61           of array-based objects can be handled by any of the existing
62           ::Array subclasses, and support for pseudo-hashes would not provide
63           any useful new capabilities.
64
65           Added support for "Template::Universal:forward_methods -delegate"
66           and "Template::Generic:object --soft_delegate" based on a
67           suggestion from Peter Chen. Extended behavior of Template -subs
68           handling to make it easy to add such functionality in the future.
69
70           Released to CPAN as Class-MakeMethods-1.008.tar.gz.
71
72       2003/09/02
73           Adjusted DESTROY behavior of Template::InsideOut and cleaned up
74           documentation.
75
76   Version 1.007
77       2003/09/01
78           Made Template definitions automatically import their class's
79           generic definitions, if present. This eliminates the need for
80           Generic subclasses to explicitly redeclare every method it
81           inherits, and should obviate the "missing declaration" problems
82           referenced below.
83
84           Updated the names of several Template subclasses, with stubs at the
85           old names for backwards compatibility: Flyweight becomes InsideOut,
86           Static becomes Global, and Struct becomes Array.
87
88           Added Template::Inheritable and basic tests for it.
89
90           Eliminated use of legacy Test.pm from remaining tests, except for
91           MethodMaker emulation.
92
93           Rearranged test directories in an effort to avoid a reported bug
94           with the test path of t/*/*.t under Windows.
95
96           Released to CPAN as Class-MakeMethods-1.007.tar.gz.
97
98       2003/08/27
99           Added section to Class::MakeMethods/EXTENDING documentation based
100           on question from Terrence Brannon.
101
102       2003/02/07
103           Fixed missing declaration of Template::Hash:instance, reported via
104           RT.
105
106   Version 1.006
107       2003/01/26
108           Additional documentation touch-ups. Moved miscellaneous POD files
109           into the Docs directory.
110
111           Added new test scripts from Class-MethodMaker-1.08, although we
112           don't yet pass them. In particular, I need to add support for the
113           new method types added in 1.04: tie_scalar, tie_list,
114           object_tie_list, object_tie_hash
115
116           Also need to compare against the changes included in
117           Class-MethodMaker-1.09 and 1.10, which don't seem to include any
118           new test code, but do include functionality changes.
119
120       2002/12/12
121           Re-integrated Template and Emulator packages; the separate
122           distribution turned out to be a hastle rather than a convenience.
123           However, in order to keep test scripts for each subsystem separate,
124           I'm now using a Makefile.PL attribute to specify a two-level deep
125           directory tree of test scripts; I hope this doesn't break on
126           Windows...
127
128           Fixed possible "use of undefined as a reference" problem in
129           Standard::*::array method generators, reported by Jared Rhine.
130
131           Tried to improve documentation, based on feedback from Jared Rhine.
132           Expunged ReadMe.pod. Extracted method catalogs into Catalog.pod.
133           Moved examples to new Example.pod, although that underlines how few
134           examples there are.
135
136   Version 1.005
137       2002/06/06
138           Added Autoload interface.
139
140           Modifed Attribute interface to add "inheritable" default logic for
141           Maker class parameter. (Suggested by Malcolm Cook.)
142
143           Fixed typo in documentation for Standard::Universal. (Spotted by
144           Malcolm Cook.)
145
146   Version 1.004
147       2002/03/23
148           Released to CPAN as Class-MakeMethods-1.004.tar.gz.
149
150       2002/03/16
151           Allow double-colons between package name and method generator name.
152
153       2002/02/19
154           Fixed related use of undef in Standard::*:hash methods.
155
156       2002/02/14
157           Adjusted Standard::*:hash methods to avoid assuming that the
158           hashref already exists.
159
160       2002/02/07
161           Added missing *_reset => clear to Template number --counter
162           interface.
163
164       2002/02/02
165           Adjusted error message in Utility::ArraySplicer
166
167       2002/01/26
168           Applied small documentation corrections suggested by Adam Spiers.
169
170           Added Standard::Universal:alias.
171
172   Version 1.003
173       2002/01/24
174           Folded "Getting Started Guide" POD into main module documentation.
175
176           Renamed Utility::TakeName to Emulator.
177
178           Split Template and Emulator packages into their own distributions.
179
180           Please Note: This means that to fully upgrade you must retrieve all
181           three of these files:
182
183             Class-MakeMethods-1.003.tar.gz
184             Class-MakeMethods-Template-1.003.tar.gz
185             Class-MakeMethods-Emulator-1.003.tar.gz
186
187           Of course, if you're not using the Template or Emulator classes,
188           there's no need to download them...
189
190       2002/01/21
191           Started bumping sub-version numbers and not using sub-sub-versions,
192           to shorten distribution names and more closely match standard
193           practice.
194
195           Added Composite::Inheritable:hook and matching test. Added
196           Composite->CurrentResults method to easily access, update composite
197           method results.
198
199   Version 1.000.*
200       v1.000.16 - 2002/01/21
201           Released to CPAN as v1.000.016.
202
203       v1.000.16 - 2002/01/20
204           Adjusted the hash and array methods in the Standard::* and
205           Composite::* packages to properly accept a set-contents call with a
206           single reference argument, and to return contents rather than ref
207           in list context.
208
209       v1.000.16 - 2002/01/14
210           Fixed a subtle bug in a test script inherited from
211           Class::MethodMaker: 4_Template_hash_hash_array.t and
212           7_MethodMaker_hash_of_lists.t both relied on "keys %hash" returning
213           the keys in a particular order, which *almost* always worked, but
214           caused failures on one or more Perl version/platform combinations.
215
216       v1.000.15 - 2002/01/14
217           Released to CPAN as v1.000.015.
218
219       v1.000.15 - 2002/01/12
220           Renamed Basic::Static to Basic::Global for consistency with
221           Standard and Composite. Hopefully, there aren't many users of this
222           module yet; please accept my apologies if this breaks your code.
223
224           Eliminated "local @_ = ...", which appears to cause a scoping
225           problem on Perl 5.6. Thanks to Adam Spiers for a thorough bug
226           report. (See http://www.perlmonks.org/index.pl?node_id=138370 for
227           details.)
228
229           Extended Template::Generic to support "array --get_set_ref" method
230           style requested by Adam Spiers.
231
232           Various documentation tweaks, including feedback from Adam Spiers:
233           Adjusted documentation to downplay Basic::* modules as a starting
234           point, in favor of Standard::* ones. Trimmed out some duplicated
235           documentation in favor of more "See L<...>" links. Adjusted
236           documentation of *::Inheritable packages in an attempt to clarify
237           the way in which the inheritance tree is searched for a value.
238
239           Factored out common code from Standard::Inheritable and
240           Composite::Inheritable to new module, Utility::Inheritable.
241           Factored out common code from Standard::Hash and Standard::Array to
242           new module, Utility::ArraySplicer. Factored out common code from
243           Template::Universal to new module, Utility::Ref. Renamed
244           Emulator::TakeName to Utility::TakeName (this is internal use only,
245           so there should be no public impact).
246
247       v1.000.15 - 2001/12/01
248           Adjusted Template::Universal's code for _CALL_METHODS_FROM_HASH_,
249           to ensure that method/arg pairs are called in order they were
250           passed in.
251
252       v1.000.15 - 2001/07/04, 2001/07/19
253           Minor additions to documentation of various method types.
254
255       v1.000.14 - 2001/07/01
256           Released as v1.000.014.
257
258       v1.000.14 - 2001/06/25, 2001/06/29, 2001/07/01
259           Removed Makefile rule from Makefile.PL to avoid warnings when used
260           with recent versions of ExtUtils::MakeMaker, which also define a
261           similar rule. (Based on bug report from Ron Savage.)
262
263           Fixed test failure for machines with P5.6 but no
264           Attribute::Handlers.  (Reported by Ron Savage, Jay Lawrence.)
265
266           Added Template::Flyweight:string_index. (But still needs test
267           script.)
268
269           Added Standard::Universal. (But still needs test scripts.)
270
271           Minor touch-ups to ReadMe and Guide documentation.
272
273       v1.000.13 - 2001/05/16, 2001/05/18, 2001/05/20, 2001/06/02, 2001/06/22,
274       2001/06/24
275           To date, this module has been circulated under several provisional
276           names: it was originally floated as a possible version-2 rewrite of
277           Class::MethodMaker, then renamed to Class::Methods when it forked
278           from that project, and then briefly to Class::MethodGenerator.
279           (Note that it can be surprisingly difficult to comply with both of
280           these perlmodlib guidelines: "To be portable each component of a
281           module name should be limited   to 11 characters. [...] Always try
282           to use two or more whole words.") In the end, I selected
283           Class::MakeMethods, as it is two whole words, and is reminiscent of
284           Class::MethodMaker without being confusing (I hope!), and I believe
285           this issue is now settled.
286
287           Standardized syntax for global options; renamed -implementation to
288           -MakerClass and -target_class to -TargetClass. Moved $TargetClass
289           and other context information into %CONTEXT with _context accessor.
290           Added ForceInstall.
291
292           Completed re-simplification of build directories; we're back to a
293           single Makefile, which avoids a warning in P5.6.0.
294
295           Added Attribute interface for use with P5.6 and later, based on
296           Attribute::Handlers.
297
298           Renamed "Simple" subclasses to "Basic". Added documentation and
299           initial tests.
300
301           Added Standard subclasses with parameter parsing and more powerful
302           accessors.
303
304           Modified Emulator::Struct to use Standard::* methods. Found struct
305           test from P5.7, and added auto_init functionality to match.
306
307           Added Composite::* subclasses.
308
309           Added Emulator::AccessorFast.
310
311           Added Class::MakeMethods::Guide with introduction and examples.
312
313           Continued clean-up effort on Template documentation. Renamed
314           Template "attributes" to "method parameters" to avoid confusion
315           with Perl attributes. Retitled Template naming rules from
316           "templates" to "interfaces".
317
318           Changed initialization code expressions of Template::Class in hopes
319           of P5.6.1 compatibility. (Problem reported by M Schwern.)
320
321           Added 'Template::Generic:new --and_then_init' based on feedback
322           from Jay Lawrence.
323
324   Early 1.000 versions
325       v1.000.12 - 2001/05/14
326           Renamed module to Class::MethodGenerator, although naming questions
327           remain.
328
329           Moved Template subclasses into Template::* namespace. Simplified
330           build directory and makefile structure.
331
332           Changed initialization code expressions of Template::PackageVar,
333           ClassVar for P5.6.0 compatibility. (Reported by M Schwern.)
334
335       v1.000.11 - 2001/05/07, 2001/05/12
336           Eliminated Bundle file. Moved general documentation to cm_base.
337
338           Renamed Class::Methods::Base to Class::Methods::Generator.
339
340           Extracted code for Template declarations to new
341           Class::Methods::Template module. Extracted disk-caching to new
342           Template::DiskCache module.  Moved TextBuilder into the Template::
343           tree.
344
345           Moved _namespace_capture code to new package
346           Class::Methods::Emulator::TakeName.
347
348           Added Simple::Hash subclass.
349
350       v1.000.10 - 2001/04/26, 2001/05/02, 2001/05/04
351           Moved _namespace_capture and _namespace_release to
352           Class::Methods::Base.
353
354           Additional doc tweakage. Moved ReadMe documentation to
355           Bundle::ClassMethods. Merged Extending documentation into Base.
356
357           Removed spurious uses of -default => 'default' in templates.
358
359           Added new ClassInherit subclass and Emulator::Inheritable.
360
361           Expunged Index subclass in favor of boolean_index and string_index
362           types on Generic.
363
364           Moved Struct:builtin_isa type to new package, StructBuiltin.
365
366           Refactored code templating function as
367           Class::Methods::Base::TextBuilder.
368
369       v1.000.9 - 2001/03/24
370           Reversed sense of - and --, as it was in 1.000.1.
371
372           Separated source files into separate directories with distinct
373           Makefiles and test hierarchies. This should clarify the boundaries
374           between the core method-generation code, the common
375           constructor/accessor methods, and the various emulator and
376           experimental packages.
377
378       v1.000.8 - 2001/01/19
379           Following receipt of a suggestion to fork from the maintainer of
380           Class::MethodMaker, renamed packge from Class::MethodMaker v2.0 to
381           Class::Methods v1.000.
382
383           Adjusted documentation to reflect fork, although additional cleanup
384           is still needed.
385
386           Moved backward compatibility to Emulator::MethodMaker subclass.
387
388           Added Generic -compatibility array index_* and hash_of_arrays
389           *_last and *_set methods to match changes in Class::MethodMaker
390           v1.02.  Added Emulator::MethodMaker support for the '-static' flag.
391           The emulator now completely satisfies the enclosed test suites,
392           from Class::MethodMaker v0.92 and v1.02.
393
394       v1.000.7 - 2001/01/05, 2001/01/06, 2001/01/07
395           Moved core code and internal code to Internals.pm. MethodMaker.pm
396           now contains only some require statements and the general user
397           guide documentation.
398
399           Moved ReadMe.pod, Changes.pod, and ToDo.pod into MethodMaker
400           directory. Separated Catalog.pod, Extending.pod,
401           RelatedModules.pod.
402
403           Included version 1 docs as Class::Methods::OriginalDocs; minor
404           revisions for clarity.
405
406           Renamed Package subclass to PackageVar, Class to ClassVar.
407
408           Added Emulation::Struct subclass.
409
410           Added support for shifting targets with make( -target_class =>
411           Package, ... ).
412
413           Extended ClassName subclass to handle requiring, rather than
414           creating subclases.
415
416       v1.000.6 - 2000/12/29, 2001/01/02, 2001/01/04
417           Restored -sugar import option for compatibility with earlier
418           versions.
419
420           Added plural names to "Generic:hash -compatibility" to support
421           v0.92 usage.
422
423           Replaced use of substr(..., 0, 1) with ... =~ s/^-// for P5.004
424           compatibility; problem found by Scott Godin.
425
426           Copy @_ before splicing and pushing on to it for P5.004
427           compatibility.
428
429           Expunged duplicate lines from Generic.pm's array_of_objects; found
430           by Ron Savage.
431
432           Renamed Hash.pm's delete and exists behaviors to avoid possible
433           run-time import conflict with Generic.pm's behaviors; failure
434           reported by Ron Savage.
435
436           Added _STATIC_ATTR_{return_value_undefined} attributes to Generic
437           string and number to allow overrides of this functionality.
438
439           Minor doc touchups and expanded examples section.
440
441       v1.000.5 - 2000/11/28, 2000/12/16, 2000/12/28
442           Added Universal -warn_calls modifier.
443
444           Folded various pod files together into main module's inline
445           documentation.  Updated catalog of existing implementations in
446           documentation.  Added pointers to some tutorials and books which
447           discuss Class::Methods.
448
449           Standardized naming of test scripts.
450
451           Can now specify default template name, via -default=>"foo".
452
453       v1.000.4 - 2000/11/22
454           Separated string, number, and boolean from the Generic scalar
455           methods.
456
457           Provide _disk_cache to shortcut the lengthy _interpret_text_builder
458           process.
459
460           Fixes to ClassName implementation.
461
462           Change to forward methods to provide better error messages when
463           object is empty.
464
465       v1.000.3 - 2000/11/03
466           Rearranged documentation into separate files in the pod/ directory.
467
468           Collapsed find_target_class and make functionality into import;
469           moved support for the old functions to the Compatibility module.
470
471           Adjusted tests to generally use standard syntax, and not
472           Compatibility hooks.
473
474       v1.000.2.1 - 2000/10/23
475           Moved commonly-accessible information to Universal.
476
477           Added block{...} replacement for enhanced behavior templating.
478
479           Added modifier mechanism to support -private and -protected.
480
481           May need to be able to specify import ordering so that modifiers
482           are applied in the right order. This hasn't bit me yet, but it's
483           there. Darn.
484
485       v1.000.2 - 2000/10/22
486           Completed generalization of Generic methods from Static and Hash.
487           Rewrote ClassVar and PackageVar to use Generic framework.
488
489           Attribute expansion can now substitute values besides name, using
490           *{attr}.
491
492           Added _diagnostics function and documentation of all failure
493           messages.
494
495           Added SEE ALSO section to documentation, brief review of Class::*
496           on CPAN.  Stumbled across Damian Conway's very nice Class::Contract
497           module.
498
499           Added Scalar and Flyweight implementations.
500
501       v1.000.1.1 - 2000/10/21
502           Rolled back change from yesterday; can still pick templates like
503           '-java'.  Allow attributes to be specified as '--foo'=>'bar' or
504           '--'=>{foo=>'bar'}
505
506           Automated caching for meta-method definition hashes.
507
508           Generalized several Static and Hash interfaces into Generic
509           templates.  Added Static:array and Static:code support.
510
511           Allow global -import to set default sources for templates, exprs,
512           behaviors.
513
514       v1.000.1 - 2000/10/19
515           Support inheritance of templates between meta-methods with -import.
516
517           Made "template" an attribute, rather than a special state variable.
518
519           Allow any attribute to be specified as -foo=>'bar'.  Changed
520           selection of standard templates from '-java' to '--java'.
521
522           Initial support for string-eval behaviors and code_exprs, and
523           Generic.pm
524
525       v1.000.0 - 2000/10/14, 2000/10/15
526           Completed initial pass of full rewrite.
527
528           Assorted cleanup of syntax and documentation.
529
530           Moved Hash, Static, and Index implementations into separate
531           packages.
532
533       v0.9.3 - 2000/09/30
534           Refactored subclass_name and class_registry.
535
536           Folded in some misc improvements from Class::MethodMaker 1.0.
537
538       v0.97x - 2000/08/04 to 2000/08/13
539           Forked from Class::MethodMaker 0.96. Substantial rewrite started
540
541           Created build_meta_method and refactored many methods to use it.
542
543           Added new_hash, hash_init, new_from_prototype.
544
545           Extended arg format. Added -template=>behavior_name. Added support
546           for array-of-names arguments.
547
548           Performance tuning. Additional refactoring to support AutoSplit
549           functionality.
550
551           Also folded in some older changes and additions from Evolution's
552           internal collection of MethodMaker subclasses:
553
554   Class::MethodMaker::Extensions
555       Change notes from unreleased collection of extensions to
556       Class::MethodMaker that were later folded into Class::MakeMethods:
557
558         2000/01/12 Added set_foo, clear_foo to class_var hashes.
559         1999/07/27 Added subclass_name.
560         1999/04/15 Changed class_var to use symbol table lookups, not eval "".
561         1999/04/05 Changed determine_once to check again if undefined.
562         1999/03/25 Added singleton method.
563         1998/09/18 Finished integration of class_registry handlers.
564         1998/07/31 Added class_var and classnames handlers.
565         1998/06/12 Added lookup handlers.
566         1998/05/09 Created no_op and determine_once method groups.
567
568
569
570perl v5.36.0                      2022-07-22     MakeMethods::Docs::Changes(3)
Impressum