1MakeMethods::Docs::ChanUgseesr(3C)ontributed Perl DocumeMnatkaetMieotnhods::Docs::Changes(3)
2
3
4
6 Class::MakeMethods::Docs::Changes - History of Class::MakeMethods
7
9 Revision history for Class::MakeMethods.
10
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)