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 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.12.0 2004-09-07 MakeMethods::Docs::Changes(3)