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.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.32.1 2021-01-27 MakeMethods::Docs::Changes(3)