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