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