File: Changes.pod

package info (click to toggle)
libclass-makemethods-perl 1.01-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid, stretch
  • size: 1,864 kB
  • ctags: 516
  • sloc: perl: 10,495; makefile: 2
file content (661 lines) | stat: -rw-r--r-- 19,224 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
=head1 NAME

Class::MakeMethods::Docs::Changes - History of Class::MakeMethods

=head1 SYNOPSIS

Revision history for Class::MakeMethods.

=head1 CHANGES

=head2 Version 1.010

=over 4

=item 2004/09/06

Moved get_declarations() and associated documentation from Standard module to superclass.

=item 2004/09/03

Developed test.pl test harness with recursive file search to fix Windows "command line too long" errors.

=item 2004/09/01

Moved Template::TextBuilder and Template::DiskCache into Utility:: namespace.

Added support for defaults with -- and -param to Standard get_declarations().

=item 2004/08/12

Began testing and integrating tied-value patches from Dominique Dumont.

=item 2004/04/27

Added method types to Evaled::Hash.

=item 2004/04/23

Added skeleton of a new Evaled::Hash class.

=back

=head2 Version 1.009

=over 4

=item 2003/09/25

Added Emulator::mcoder and compatibility tests.

Released to CPAN as Class-MakeMethods-1.009.tar.gz.

=item 2003/09/22

Added support for lvalue methods to Template and Template::Generic. Added a few tests to demonstrate they're working. Added an example to Docs::Examples.

Added Emulator::accessors and compatibility tests.

Minor documentation improvements.

=back

=head2 Version 1.008

=over 4

=item 2003/09/05

Adjusted layout of test directories in another attempt to solve a MakeMaker/shell-glob issue on Windows that was preventing make test from running correctly. 

Removed Template::PseudoHash, since this package never really worked, as pointed out by a question from Mike Castle. Management of array-based objects can be handled by any of the existing ::Array subclasses, and support for pseudo-hashes would not provide any useful new capabilities.

Added support for "Template::Universal:forward_methods -delegate" and "Template::Generic:object --soft_delegate" based on a suggestion from Peter Chen. Extended behavior of Template -subs handling to make it easy to add such functionality in the future.

Released to CPAN as Class-MakeMethods-1.008.tar.gz.

=item 2003/09/02

Adjusted DESTROY behavior of Template::InsideOut and cleaned up documentation.

=back

=head2 Version 1.007

=over 4

=item 2003/09/01

Made Template definitions automatically import their class's generic
definitions, if present. This eliminates the need for Generic
subclasses to explicitly redeclare every method it inherits, and
should obviate the "missing declaration" problems referenced below.

Updated the names of several Template subclasses, with stubs at
the old names for backwards compatibility: Flyweight becomes
InsideOut, Static becomes Global, and Struct becomes Array.

Added Template::Inheritable and basic tests for it.

Eliminated use of legacy Test.pm from remaining tests, except for
MethodMaker emulation.

Rearranged test directories in an effort to avoid a reported bug
with the test path of t/*/*.t under Windows.

Released to CPAN as Class-MakeMethods-1.007.tar.gz.

=item 2003/08/27

Added section to Class::MakeMethods/EXTENDING documentation based
on question from Terrence Brannon.

=item 2003/02/07

Fixed missing declaration of Template::Hash:instance, reported via RT.

=back

=head2 Version 1.006

=over 4

=item 2003/01/26

Additional documentation touch-ups. Moved miscellaneous POD files into the Docs directory.

Added new test scripts from Class-MethodMaker-1.08, although we
don't yet pass them. In particular, I need to add support for the
new method types added in 1.04: tie_scalar, tie_list, object_tie_list,
object_tie_hash

Also need to compare against the changes included in Class-MethodMaker-1.09 and 1.10, which don't seem to include any new test code, but do include functionality changes.

=item 2002/12/12

Re-integrated Template and Emulator packages; the separate distribution
turned out to be a hastle rather than a convenience. However, in
order to keep test scripts for each subsystem separate, I'm now
using a Makefile.PL attribute to specify a two-level deep directory
tree of test scripts; I hope this doesn't break on Windows...

Fixed possible "use of undefined as a reference" problem in
Standard::*::array method generators, reported by Jared Rhine.

Tried to improve documentation, based on feedback from Jared Rhine.
Expunged ReadMe.pod. Extracted method catalogs into Catalog.pod.
Moved examples to new Example.pod, although that underlines how
few examples there are.

=back


=head2 Version 1.005

=over 4

=item 2002/06/06

Added Autoload interface.

Modified Attribute interface to add "inheritable" default logic for
Maker class parameter. (Suggested by Malcolm Cook.)

Fixed typo in documentation for Standard::Universal. (Spotted by
Malcolm Cook.)

=back


=head2 Version 1.004

=over 4

=item 2002/03/23

Released to CPAN as Class-MakeMethods-1.004.tar.gz.

=item 2002/03/16

Allow double-colons between package name and method generator name.

=item 2002/02/19

Fixed related use of undef in Standard::*:hash methods.

=item 2002/02/14

Adjusted Standard::*:hash methods to avoid assuming that the hashref
already exists.

=item 2002/02/07

Added missing *_reset => clear to Template number --counter interface.

=item 2002/02/02

Adjusted error message in Utility::ArraySplicer

=item 2002/01/26

Applied small documentation corrections suggested by Adam Spiers.

Added Standard::Universal:alias.

=back

=head2 Version 1.003

=over 4

=item 2002/01/24

Folded "Getting Started Guide" POD into main module documentation.

Renamed Utility::TakeName to Emulator.

Split Template and Emulator packages into their own distributions.

B<Please Note:> This means that to fully upgrade you must retrieve
all three of these files:

  Class-MakeMethods-1.003.tar.gz 
  Class-MakeMethods-Template-1.003.tar.gz 
  Class-MakeMethods-Emulator-1.003.tar.gz 

Of course, if you're not using the Template or Emulator classes,
there's no need to download them...


=item 2002/01/21

Started bumping sub-version numbers and not using sub-sub-versions,
to shorten distribution names and more closely match standard
practice.

Added Composite::Inheritable:hook and matching test. Added
Composite->CurrentResults method to easily access, update composite
method results.

=back

=head2 Version 1.000.*

=over 4

=item v1.000.16 - 2002/01/21

Released to CPAN as v1.000.016.

=item v1.000.16 - 2002/01/20

Adjusted the hash and array methods in the Standard::* and Composite::*
packages to properly accept a set-contents call with a single
reference argument, and to return contents rather than ref in list
context.

=item v1.000.16 - 2002/01/14

Fixed a subtle bug in a test script inherited from Class::MethodMaker:
4_Template_hash_hash_array.t and 7_MethodMaker_hash_of_lists.t both
relied on "keys %hash" returning the keys in a particular order,
which *almost* always worked, but caused failures on one or more
Perl version/platform combinations.


=item v1.000.15 - 2002/01/14

Released to CPAN as v1.000.015.

=item v1.000.15 - 2002/01/12

Renamed Basic::Static to Basic::Global for consistency with Standard
and Composite. Hopefully, there aren't many users of this module
yet; please accept my apologies if this breaks your code.

Eliminated "local @_ = ...", which appears to cause a scoping
problem on Perl 5.6. Thanks to Adam Spiers for a thorough bug
report. (See http://www.perlmonks.org/index.pl?node_id=138370 for
details.)

Extended Template::Generic to support "array --get_set_ref" method
style requested by Adam Spiers.

Various documentation tweaks, including feedback from Adam Spiers:
Adjusted documentation to downplay Basic::* modules as a starting
point, in favor of Standard::* ones. Trimmed out some duplicated
documentation in favor of more "See LE<lt>...E<gt>" links. Adjusted
documentation of *::Inheritable packages in an attempt to clarify
the way in which the inheritance tree is searched for a value.

Factored out common code from Standard::Inheritable and
Composite::Inheritable to new module, Utility::Inheritable. Factored
out common code from Standard::Hash and Standard::Array to new
module, Utility::ArraySplicer. Factored out common code from
Template::Universal to new module, Utility::Ref. Renamed
Emulator::TakeName to Utility::TakeName (this is internal use only,
so there should be no public impact).


=item v1.000.15 - 2001/12/01

Adjusted Template::Universal's code for _CALL_METHODS_FROM_HASH_,
to ensure that method/arg pairs are called in order they were passed
in.

=item v1.000.15 - 2001/07/04, 2001/07/19

Minor additions to documentation of various method types.


=item v1.000.14 - 2001/07/01

Released as v1.000.014.


=item v1.000.14 - 2001/06/25, 2001/06/29, 2001/07/01

Removed Makefile rule from Makefile.PL to avoid warnings when used
with recent versions of ExtUtils::MakeMaker, which also define a
similar rule. (Based on bug report from Ron Savage.)

Fixed test failure for machines with P5.6 but no Attribute::Handlers.
(Reported by Ron Savage, Jay Lawrence.)

Added Template::Flyweight:string_index. (But still needs test
script.)

Added Standard::Universal. (But still needs test scripts.)

Minor touch-ups to ReadMe and Guide documentation.


=item v1.000.13 - 2001/05/16, 2001/05/18, 2001/05/20, 2001/06/02, 2001/06/22, 2001/06/24

To date, this module has been circulated under several provisional
names: it was originally floated as a possible version-2 rewrite
of Class::MethodMaker, then renamed to Class::Methods when it forked
from that project, and then briefly to Class::MethodGenerator.
(Note that it can be surprisingly difficult to comply with both of
these L<perlmodlib> guidelines: "To be portable each component of
a module name should be limited   to 11 characters. [...] Always
try to use two or more whole words.") In the end, I selected
Class::MakeMethods, as it is two whole words, and is reminiscent
of Class::MethodMaker without being confusing (I hope!), and I
believe this issue is now settled.

Standardized syntax for global options; renamed -implementation to
-MakerClass and -target_class to -TargetClass. Moved $TargetClass
and other context information into %CONTEXT with _context accessor.
Added ForceInstall.

Completed re-simplification of build directories; we're back to a
single Makefile, which avoids a warning in P5.6.0.

Added Attribute interface for use with P5.6 and later, based on
Attribute::Handlers.

Renamed "Simple" subclasses to "Basic". Added documentation and
initial tests.

Added Standard subclasses with parameter parsing and more powerful
accessors.

Modified Emulator::Struct to use Standard::* methods. Found struct
test from P5.7, and added auto_init functionality to match.

Added Composite::* subclasses. 

Added Emulator::AccessorFast.

Added Class::MakeMethods::Guide with introduction and examples.

Continued clean-up effort on Template documentation. Renamed Template
"attributes" to "method parameters" to avoid confusion with Perl
attributes. Retitled Template naming rules from "templates" to
"interfaces".

Changed initialization code expressions of Template::Class in hopes
of P5.6.1 compatibility. (Problem reported by M Schwern.)

Added 'Template::Generic:new --and_then_init' based on feedback
from Jay Lawrence.

=back

=head2 Early 1.000 versions

=over 4

=item v1.000.12 - 2001/05/14

Renamed module to Class::MethodGenerator, although naming questions
remain.

Moved Template subclasses into Template::* namespace. Simplified
build directory and makefile structure.

Changed initialization code expressions of Template::PackageVar,
ClassVar for P5.6.0 compatibility. (Reported by M Schwern.)


=item v1.000.11 - 2001/05/07, 2001/05/12

Eliminated Bundle file. Moved general documentation to cm_base.

Renamed Class::Methods::Base to Class::Methods::Generator.

Extracted code for Template declarations to new Class::Methods::Template
module. Extracted disk-caching to new Template::DiskCache module.
Moved TextBuilder into the Template:: tree.

Moved _namespace_capture code to new package
Class::Methods::Emulator::TakeName.

Added Simple::Hash subclass.


=item v1.000.10 - 2001/04/26, 2001/05/02, 2001/05/04

Moved _namespace_capture and _namespace_release to Class::Methods::Base.

Additional doc tweakage. Moved ReadMe documentation to
Bundle::ClassMethods. Merged Extending documentation into Base.

Removed spurious uses of -default => 'default' in templates.

Added new ClassInherit subclass and Emulator::Inheritable.

Expunged Index subclass in favor of boolean_index and string_index
types on Generic.

Moved Struct:builtin_isa type to new package, StructBuiltin.

Refactored code templating function as Class::Methods::Base::TextBuilder.


=item v1.000.9 - 2001/03/24

Reversed sense of - and --, as it was in 1.000.1.

Separated source files into separate directories with distinct
Makefiles and test hierarchies. This should clarify the boundaries
between the core method-generation code, the common constructor/accessor
methods, and the various emulator and experimental packages.


=item v1.000.8 - 2001/01/19

Following receipt of a suggestion to fork from the maintainer of
Class::MethodMaker, renamed package from Class::MethodMaker v2.0 to
Class::Methods v1.000.

Adjusted documentation to reflect fork, although additional cleanup
is still needed.

Moved backward compatibility to Emulator::MethodMaker subclass.

Added Generic -compatibility array index_* and hash_of_arrays *_last
and *_set methods to match changes in Class::MethodMaker v1.02.
Added Emulator::MethodMaker support for the '-static' flag. The
emulator now completely satisfies the enclosed test suites, from
Class::MethodMaker v0.92 and v1.02.


=item v1.000.7 - 2001/01/05, 2001/01/06, 2001/01/07

Moved core code and internal code to Internals.pm. MethodMaker.pm
now contains only some require statements and the general user
guide documentation.

Moved ReadMe.pod, Changes.pod, and ToDo.pod into MethodMaker
directory. Separated Catalog.pod, Extending.pod, RelatedModules.pod.

Included version 1 docs as Class::Methods::OriginalDocs; minor
revisions for clarity.

Renamed Package subclass to PackageVar, Class to ClassVar.

Added Emulation::Struct subclass.

Added support for shifting targets with make( -target_class =>
Package, ... ).

Extended ClassName subclass to handle requiring, rather than creating
subclases.


=item v1.000.6 - 2000/12/29, 2001/01/02, 2001/01/04

Restored -sugar import option for compatibility with earlier
versions.

Added plural names to "Generic:hash -compatibility" to support
v0.92 usage.

Replaced use of substr(..., 0, 1) with ... =~ s/^-// for P5.004
compatibility; problem found by Scott Godin.

Copy @_ before splicing and pushing on to it for P5.004 compatibility.

Expunged duplicate lines from Generic.pm's array_of_objects; found
by Ron Savage.

Renamed Hash.pm's delete and exists behaviors to avoid possible
run-time import conflict with Generic.pm's behaviors; failure
reported by Ron Savage.

Added _STATIC_ATTR_{return_value_undefined} attributes to Generic
string and number to allow overrides of this functionality.

Minor doc touchups and expanded examples section.


=item v1.000.5 - 2000/11/28, 2000/12/16, 2000/12/28

Added Universal -warn_calls modifier.

Folded various pod files together into main module's inline
documentation.  Updated catalog of existing implementations in
documentation.  Added pointers to some tutorials and books which
discuss Class::Methods.

Standardized naming of test scripts.

Can now specify default template name, via -default=>"foo".


=item v1.000.4 - 2000/11/22

Separated string, number, and boolean from the Generic scalar
methods.

Provide _disk_cache to shortcut the lengthy _interpret_text_builder
process.

Fixes to ClassName implementation.

Change to forward methods to provide better error messages when
object is empty.


=item v1.000.3 - 2000/11/03

Rearranged documentation into separate files in the pod/ directory.

Collapsed find_target_class and make functionality into import;
moved support for the old functions to the Compatibility module.

Adjusted tests to generally use standard syntax, and not Compatibility
hooks.


=item v1.000.2.1 - 2000/10/23

Moved commonly-accessible information to Universal.

Added block{...} replacement for enhanced behavior templating.

Added modifier mechanism to support -private and -protected.

May need to be able to specify import ordering so that modifiers
are applied in the right order. This hasn't bit me yet, but it's
there. Darn.


=item v1.000.2 - 2000/10/22

Completed generalization of Generic methods from Static and Hash.
Rewrote ClassVar and PackageVar to use Generic framework.

Attribute expansion can now substitute values besides name, using
*{attr}.

Added _diagnostics function and documentation of all failure
messages.

Added SEE ALSO section to documentation, brief review of Class::*
on CPAN.  Stumbled across Damian Conway's very nice Class::Contract
module.

Added Scalar and Flyweight implementations.


=item v1.000.1.1 - 2000/10/21

Rolled back change from yesterday; can still pick templates like
'-java'.  Allow attributes to be specified as '--foo'=>'bar' or
'--'=>{foo=>'bar'}

Automated caching for meta-method definition hashes.

Generalized several Static and Hash interfaces into Generic templates.
Added Static:array and Static:code support.

Allow global -import to set default sources for templates, exprs,
behaviors.


=item v1.000.1 - 2000/10/19

Support inheritance of templates between meta-methods with -import.

Made "template" an attribute, rather than a special state variable.

Allow any attribute to be specified as -foo=>'bar'.  Changed
selection of standard templates from '-java' to '--java'.

Initial support for string-eval behaviors and code_exprs, and
Generic.pm


=item v1.000.0 - 2000/10/14, 2000/10/15

Completed initial pass of full rewrite.

Assorted cleanup of syntax and documentation.

Moved Hash, Static, and Index implementations into separate packages.


=item v0.9.3 - 2000/09/30

Refactored subclass_name and class_registry.

Folded in some misc improvements from Class::MethodMaker 1.0.


=item v0.97x - 2000/08/04 to 2000/08/13

Forked from Class::MethodMaker 0.96. Substantial rewrite started

Created build_meta_method and refactored many methods to use it.

Added new_hash, hash_init, new_from_prototype.

Extended arg format. Added -template=>behavior_name. Added support
for array-of-names arguments.

Performance tuning. Additional refactoring to support AutoSplit
functionality.

Also folded in some older changes and additions from Evolution's
internal collection of MethodMaker subclasses:

=back

=head2 Class::MethodMaker::Extensions

Change notes from unreleased collection of extensions to Class::MethodMaker that were later folded into Class::MakeMethods:

  2000/01/12 Added set_foo, clear_foo to class_var hashes.
  1999/07/27 Added subclass_name.
  1999/04/15 Changed class_var to use symbol table lookups, not eval "".
  1999/04/05 Changed determine_once to check again if undefined.
  1999/03/25 Added singleton method.
  1998/09/18 Finished integration of class_registry handlers.
  1998/07/31 Added class_var and classnames handlers.
  1998/06/12 Added lookup handlers.
  1998/05/09 Created no_op and determine_once method groups.

=cut