foo
[gitmo/Class-MOP.git] / Changes
CommitLineData
7c90a1a8 1Revision history for Perl extension Class-MOP.
b817e248 2
4c4a6c41 30.49
4 ~ some doc cleanup ~
6c9f390e 5
6 * Class::MOP::Class
7 - added the &subclasses method (thanks rlb)
4c4a6c41 8
1b8b3e09 90.48 Mon. Nov. 26, 2007
d14f6cbe 10 * Class::MOP::Attribute
11 - fixed get_read/write_method to handle the
12 HASH ref case, which makes the
13 get_read/write_method_ref handle it too.
14 - added more tests for this
15
742fb371 160.47 Sat. Nov. 24, 2007
17 * Class::MOP::Attribute
18 - fixed misspelling in get_write_method_ref
78d9bb38 19 - added more tests for this
742fb371 20
fe7c0b15 210.46 Fri. Nov. 23, 2007
b7bdffc3 22 * Class::MOP::Class
23 - added the linearized_isa method instead of constantly
24 pruning duplicate classes (this will be even more
25 useful in the 5.10-compat version coming soon)
5da16d1b 26
27 * Class::MOP::Attribute
28 - added the get_read_method_ref and get_write_method_ref
29 methods which allow you to retrieve a CODE ref which
30 can always be used to read or write an attribute.
b7bdffc3 31
1a5cc82e 320.45 Thurs. Nov. 13, 2007
232c4e13 33 * Class::MOP::Attribute
34 - Fix error message on confess (groditi)
35
544143b2 360.44 Thurs. Nov. 13, 2007
37 - Apparently I didn't make dist correctly (groditi)
38
c0aeeb91 390.43 Thurs. Nov. 13, 2007
b08fd50c 40 * Class::MOP
1d68af04 41 - Add support for the 'builder' attribute (groditi)
42
b08fd50c 43 * Class::MOP::Class
44 - optimise metaclass-already-exists check in
45 construct_class_instance (groditi)
46 - duplicate check into initialize to save a
47 call through (groditi)
48
1d68af04 49 * Class::MOP::Attribute
50 - Add support for the 'builder' attribute (groditi)
8768ecf3 51 - Make predicates check for the existence of a value, not whether
b08fd50c 52 it is defined (groditi)
8768ecf3 53
54 * Class::MOP::Instance
55 - Make predicates check for the existence of a value, not whether
b08fd50c 56 it is defined (groditi)
8768ecf3 57
565f0cbb 58 * Class::MOP::Method::Accessor
59 - made this a subclass of Class::MOP::Method::Generated
60 - removed the relevant attributes
61
62 * Class::MOP::Method::Constructor
63 - fixed the cached values we had to be more sane
64 - made this a subclass of Class::MOP::Method::Generated
65 - fixed generated constructor so it properly handles
66 subclasses now.
67 - added tests for this
68 - added the option to allow for both inlined and
69 non-inlined constructors.
b08fd50c 70 - Update inlined methods for builder and predicate changes (groditi)
565f0cbb 71
72 * Class::MOP::Method::Generated
73 - added this class as an abstract base for the
74 Class::MOP::Method::{Constructor,Accessor} classes
75 - added tests for this
76
b08fd50c 77 *t/
78 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
79 - Tests for new predicate behavior (and corrections to old tests) (groditi)
80
81 *examples/
82 - Update ArrayRef based class example to work with predicate changes
83
367183c4 840.42 Mon. July 16, 2007
9195ddff 85 !!! Horray for mst, he fixed it !!!
86
92af7fdf 87 * Class::MOP::Package
88 - alter symbol table handling to deal with 5.8.x and 5.9.x
9195ddff 89
92af7fdf 90 * t/
9195ddff 91 - Get rid of the crappy workaround from 0.40/41
92af7fdf 92
829f7554 930.41 Sun. July 15, 2007
94 * t/
95 Arghh!!! My TODO test didn't work, so I handle
96 it manually now so that people can use this
97 with 5.9.5/bleadperl without issue.
98
1d7205b8 990.40 Tues, July 3, 2007
9f88b8ff 100 * t/
101 ~ marked a test in 003_methods.t as TODO
1d7205b8 102 for perl 5.9.5 (this test is irrelvant to
103 the module functioning on 5.9.5 for the most
104 part anyway)
9f88b8ff 105
28acb786 1060.39 Mon. June 18, 2007
b817e248 107 * Class::MOP::Immutable
0ac992ee 108 - added make_metaclass_mutable + docs (groditi)
109 - removed unused variable
d9586da2 110 - added create_immutable_transformer
111 necessary for sane overloading of immutable behavior
112 - tests for this (groditi)
0ac992ee 113
114 * Class::MOP::Class
115 - Immutability can now be undone,
116 added make_mutable + tests + docs (groditi)
04dd7510 117 - Massive changes to the way Immutable is done
118 for details see comments next to make_immutable
119 This fixes a bug where custom metaclasses broke
120 when made immutable. We are now keeping one immutable
121 metaclass instance per metaclass instead of just one
122 to prevent isa hierarchy corruption. Memory use will go
123 up, but I suspect it will be neglible.
124 - New tests added for this behavior. (groditi)
7c90a1a8 125
c0fcd6ab 1260.38 Thurs. May 31, 2007
823a5d31 127 ~~ More documentation updates ~~
c81de280 128
823a5d31 129 * Class::MOP::Package
130 - we now deal with stub methods properly
131 - added tests for this
c0fcd6ab 132 - fixed some tests failing on 5.9.5 (thanks blblack)
c81de280 133
b25109b1 134 * Class::MOP::Attribute
135 - added get_read_method and get_write_method
c81de280 136 thanks to groditi for this code, tests
137 and docs.
b25109b1 138 - added tests and POD for this
795a0c8b 139
140 * Class::MOP::Class
141 - fixed RT issue #27329, clone object now
142 handles undef values correctly.
143 - added tests for this
d4ba1677 144 - Corrected anon-class handling so that they
145 will not get reaped when instances still
146 exist which need to reference them. This is
147 the correct behavior, hopefully this is an
148 obscure enough feature that there are not too
149 many work arounds out in the wild.
150 - added tests for this by groditi
95514cb4 151 - updated docs to explain this
152
153 * metaclass
c0fcd6ab 154 - load custom metaclasses automatically (thanks groditi)
f2266181 155 - added tests for this behavior
a06797b0 156
3dc99d93 1570.37 Sat. March 10, 2007
448b6e55 158 ~~ Many, many documentation updates ~~
159
160 * Class::MOP
161 - added &load_class and &is_class_loaded
162 - added tests and docs for these
2367814a 163
9363ea89 164 * Class::MOP::Attribute
165 - default now checks the instance with defined to
166 avoid setting off bool-overloads (found by Carl Franks)
167
c23184fc 1680.37_002
169 * /t
170 - bad name in a test, causing meaningless failuress.
171 No other changes.
172
1730.37_001
174
175 ~~ GLOBAL CHANGES ~~
176 - All attribute names are now consistent and follow Perl 6
177 style (prefixed with the sigil, and ! as the twigil for
178 private attrs). This should not affect any code, unless
179 you broke encapsulation, in which case, it is your problem
180 anyway.
181
182 !! Class::MOP::Class::Immutable has been removed
183
184 * Class::MOP::Method::Constructor
185 - this has been moved out of Class::MOP::Class::Immutable
186 and is a proper subclass of Class::MOP::Method now.
187
188 * Class::MOP::Class
189 - this module now uses Class::MOP::Immutable for the
190 immutable transformation instead of
191 Class::MOP::Class::Immutable.
192
193 + Class::MOP::Immutable
194 - this module now controls the transformation from a mutable
195 to an immutable version of the class. Docs for this will
196 be coming eventually.
197
198
cdc1ecba 1990.36 Sun. Nov. 5, 2006
a651e249 200 * Class::MOP::Class
201 - added a few 'no warnings' lines to keep annoying
202 (and meaningless) warnings from chirping during
203 global destruction.
0870928c 204
205 * Class::MOP
206 - some more bootstrapping is now done on the new
207 classes
208
209 * Class::MOP::Class::Immutable
210 *** API CHANGE ***
211 - constructor generation is now handled by
212 the Class::MOP::Method::Constructor class
213
214 * Class::MOP::Method::Constructor
215 - created this to handle constructor generation
216 in Class::MOP::Class::Immutable
217
218 * Class::MOP::Attribute
219 *** API CHANGE ***
220 - attributes now delegate to the
221 Class::MOP::Method::Accessor to generate
222 accessors
223
224 * Class::MOP::Method::Accessor
225 - all accessor generation functions from
226 Class::MOP::Attribute have been moved here
a651e249 227
80f00c79 2280.35 Sat. Sept. 30, 2006
8745cf22 229
230 * scripts/class_browser.pl
231 - initial prototype of a class browser, more
232 on this to come. Comments and patches are
233 very much welcome.
b1897d4d 234
235 * Class::MOP
3e86c902 236 - All Class::MOP::* accessors are no longer
237 re-generated in the bootstrap, instead
6d2118a4 238 they are aliased from the originals
6d2118a4 239 - fixed tests to reflect
b1897d4d 240 - added Class::MOP::Method (and its subclasses)
241 to the bootstrap
242 - adjusted tests for this
86482605 243 - added the Class::MOP::Instance attributes
244 to the bootstrap
b1897d4d 245
246 * Class::MOP::Method
247 *** API CHANGE ***
248 - methods are no longer blessed CODE refs
249 but are actual objects which can be CODE-ified
250 - adjusted tests to compensate
86482605 251 - adjusted docs for this
b1897d4d 252
253 * Class::MOP::Class
254 - changed how methods are dealt with to
255 encapsulate most of the work into the
256 &get_method_map method
257 - made several adjustments for the change
258 in Class::MOP::Method
259 - &add_attribute now checks if you are adding
260 a duplicate name, and properly removes the
261 old one before installing the new one
262 - added tests for this
86482605 263 - adjusted docs for this
b1897d4d 264
265 * Class::MOP::Class::Immutable
266 - added caching of &get_method_map
267 - fixed issue with &get_package_symbol
268 - cleaned up the methods that die (patch by David Wheeler)
269
270 * Class::MOP::Package
271 - added filtering capabilities to
272 &list_all_package_symbols
273
a549ce50 2740.34 Sat. Aug. 26, 2006
c4260b45 275 * Class::MOP::Class
276 - added the %:methods attribute, which like
277 the $:version and such just actually goes
278 to the symbol table to get it's stuff.
279 However, it makes the MOP more complete.
88dd563c 280 ** API CHANGE **
281 - The &create method now requires that all
282 but the package name now is passed in as
283 named parameters. See docs for more info.
284 - updated docs and tests for this
c4260b45 285
286 * Class::MOP::Object
287 - added &dump method to easily Data::Dumper
288 an object
289
290 * Class::MOP
291 - cleaned up the initialization of attributes
292 which do not store things in the instance
293 - added the %:methods attribute definition to
294 the bootstrap
88dd563c 295
296 ~ lots of misc. test cleanup
c4260b45 297
56e8dd5d 2980.33 Sat. Aug. 19, 2006
be7677c7 299 * Class::MOP::Class
300 - moved the metaclass cache out of here
301 and it is now in Class::MOP itself.
56e8dd5d 302
303 * Class::MOP
304 - moved all the metaclass cache stuff here
305 - fixed all tests for this
be7677c7 306
148b4697 307 * Class::MOP::Attribute
308 - reference values (other than CODE refs)
309 are no longer allowed for defaults
310 - added tests for this
56dcfc1a 311
312 * Class::MOP::Package
313 - fixed an issue with perl 5.8.1 and how it deals
e3a2c885 314 with symbol tables. The namespace hash is now
315 always reloaded from the symbol table.
316
317 ~ lots of misc. documentation cleanup
1396f86b 318
716c5765 3190.32 Sat. Aug. 12, 2006
6e57504d 320 + added Class::MOP::Object so that the
321 metamodel is more complete (and closer
322 to what Perl 6 will probably be).
323
9ca19585 324 * Class::MOP::Package
325 - refactored entire class, this is now
326 the primary gateway between the metaclass
327 and the Perl 5 symbol table
328 - added many tests for this
6e57504d 329 - this class is now a subclass of
330 Class::MOP::Object
716c5765 331 - added some tests to reflect this
9ca19585 332
333 * Class::MOP::Class
334 - refactored all symbol table access to
335 use Class::MOP::Package methods instead
f0480c45 336
337 * Class::MOP::Module
338 - adding the $:version attribute in the bootstrap
339 so that Module has a version as an attribute
340 - see comment in Class::MOP for details
341 - added the $:authority attribute to this module
342 as well as an &identifier method, to bring us
343 ever closer to Perl 6 goodness
716c5765 344 - I have added $AUTHORITY to all the modules
345 - added tests for this
9ca19585 346
f0480c45 347 * Class::MOP::Instance
348 - added &deinitialize_slot for removing slots
349 from an instance
350 - added tests for this
9ca19585 351
352 * Class::MOP::Attribute
353 - added support for &deinitialize_slot for removing
354 slots from an instance
355 - added tests for this
356
1a09d9cc 3570.31 Sat. July 15, 2006
358
b679e644 359 * Class::MOP::Class
360 - added &find_method_by_name to locate a method
361 anywhere within the class hierarchy
362
363 * Class::MOP::Attribute
364 - added &set_value and &get_value for getting
365 the value of the attribute for a particular
366 instance.
367
373a16ae 3680.30 Wed. July 5, 2006
369 ---------------------------------------
370 This is the first version of Class::MOP
371 to introduce the immutable features which
372 will be used for optimizating the MOP.
373 This support should still be considered
374 experimental, but moving towards stability.
375 ---------------------------------------
e0a82090 376
373a16ae 377 * Created Class::MOP::Class::Immutable
be960ba1 378
373a16ae 379 * Created the Class::MOP::Package and
380 Class::MOP::Module classes to more
381 closely conform to Perl 6's meta-model
e0a82090 382
383 * Class::MOP::Class
384 - now inherits from Class::MOP::Module
385 - several methods moved to ::Module and
386 ::Package and now inherited
387 - added tests for this
c0cbf4d9 388
389 * Class::MOP::Instance
390 - added an is_inlinable method to allow other
391 classes to check before they attempt to optimize.
be960ba1 392 - added an inline_create_instance to inline
393 instance creation (of course)
394
2ba153a9 395 ** API CHANGE **
396 - the Class::MOP::Class::*_package_variable
397 methods are all now methods of Class::MOP::Package
398 and called *_package_symbol instead. This is
399 because they are now more general purpose symbol
400 table manipulation methods.
e0a82090 401
cdfaa4cc 4020.29_02 Thurs. June 22, 2006
403 ++ DEVELOPER RELEASE ++
df7b4119 404 * Class::MOP::Class
405 - small change in &create so that it behaves
406 properly when inherited
cdfaa4cc 407 - small fix to &clone_instance
df7b4119 408
667cecf3 4090.29_01 Fri. May 12, 2006
410 ++ DEVELOPER RELEASE ++
411 - This release works in combination with
412 Moose 0.09_01, it is a developer release
413 because it introduces a new instance
414 sub-protocol and has not yet been
415 optimized.
416
40483095 417 * Class::MOP::Class
418 - anon-classes are now properly garbage collected
419 - added tests for this
195f5bf8 420 - improved method modifier wrapping
40483095 421
2bab2be6 422 * Class::MOP::Instance
1becdfcc 423 - added new instance protocol
2bab2be6 424 - added tests for this
425 - changed all relevant modules and examples
426 - Class::MOP::Class
427 - Class::MOP::Attribute
428 - examples/*
429
1becdfcc 430 * metaclass
431 - you no longer need to specify the metaclass
432 itself, if it is not there, Class::MOP::Class
433 is just assumed
434 - updated tests for this
435
436 * examples/
437 - added ArrayBasedStorage example to show
438 instance storage using ARRAY refs instead of
439 HASH refs.
440 - added tests for this
441 - InsideOutClass is totally revised using the
442 new instance protocol
443 - added more tests for this
444
93b4e576 4450.26 Mon. April 24, 2006
e7f732e4 446 * Class::MOP::Class
447 - added find_attribute_by_name method
448 - added tests and docs for this
56a0b530 449 - some small optimizations
450
451 * Class::MOP::Attribute
452 - some small optimizations
e7f732e4 453
46666f33 4540.25 Thurs. April 20, 2006
587aca23 455 * Class::MOP::Class
456 - added create_anon_class for creating anonymous classes
457 - added tests for this
458 - added get_all_metaclasses, get_all_metaclass_names
459 and get_all_metaclass_instances method to allow
460 access to all the cached metaclass objects.
bd4e03f9 461 - attribute slot initialization is now the responsibility
462 of the attribute itself, and construct_instance now
463 delegates appropriately
464
465 * Class::MOP::Attribute
466 - attribute slot initialization is now the responsibility
467 of the attribute itself, so we added a method for it
468 called initialize_instance_slot
fed4cee7 469
470 * examples/
471 - adjusted all the examples to use the new attribute
472 initialize_instance_slot method
587aca23 473
1daaa2b2 4740.24 Tues. April 11, 2006
8c936afc 475 * Class::MOP::Class
476 - cleaned up how the before/after/around method
477 modifiers get named with Sub::Name
478
b9dfbf78 4790.23 Thurs. March 30, 2006
a977cf65 480 * Class::MOP::Class
481 - fixed the way attribute defaults are handled
482 during instance construction (bug found by chansen)
b9dfbf78 483
484 * Class::MOP::Attribute
485 - read-only accessors ('reader') will now die if
486 passed more than one argument (attempting to write
487 to them basically)
488 - added tests for this
489 - adjusted all /example files to comply
a977cf65 490
f9eba090 4910.22 Mon. March 20, 2006
0eff2c16 492 * Class::MOP::Class
493 - localized $@ in the *_package_variable functions
494 because otherwise, it does ugly things in Moose.
495 - added test case for this
496
1988e85e 4970.21 Wed. March 15, 2006
2f6d5412 498 * Class::MOP::Class
499 - fixed issue where metaclasses are reaped from
500 our cache in global destruction, and so are not
501 available in DESTORY calls
502
96ceced8 5030.20 Thurs. March 2, 2006
d3cb0d4a 504 - removed the dependency for Clone since
505 we no longer to deep-cloning by default.
a4258ffd 506
507 * Class::MOP::Method
96ceced8 508 - added &package_name, &name and
509 &fully_qualified_name methods, some of
a4258ffd 510 which were formerly private subs in
511 Class::MOP::Class
512
513 * Class::MOP::Method::Wrapped
514 - allows for a method to be wrapped with
515 before, after and around modifiers
516 - added tests and docs for this feature
d3cb0d4a 517
518 * Class::MOP::Class
58d75218 519 - improved &get_package_symbol
96ceced8 520 - &version and &superclasses now use it
a4258ffd 521 - methods are now blessed into Class::MOP::Method
522 whenever possible
a4258ffd 523 - added methods to install CLOS-style method modifiers
524 - &add_before_method_modifier
525 - &add_after_method_modifier
526 - &add_around_method_modifier
527 - added tests and docs for these
96ceced8 528 - added &find_next_method_by_name which finds the
529 equivalent of SUPER::method_name
d3cb0d4a 530
1c020571 5310.12 Thurs. Feb 23, 2006
d89c0fad 532 - reduced the dependency on B, no need to always
533 have the latest
534
1c020571 535 * examples/
536 - added docs to the C3 method dispatch order test
537 - fixed missing Algorithm::C3 dependency by making
538 the test skip if it is not installed
539
0dea7280 5400.11 Mon Feb. 20, 2006
f3f5bd34 541 * examples/
542 - added example of changing method dispatch order to C3
a27ae83f 543
544 * Class::MOP::Class
19d4b5b8 545 - changed how clone_instance behaves, it now only does a
546 shallow clone (see docs for more details)
a27ae83f 547 - added docs and tests
f3f5bd34 548
3bf7644b 5490.10 Tues Feb. 14, 2006
550 ** This release was mostly about writing more tests and
551 cleaning out old and dusty code, the MOP should now
552 be considered "ready to use".
553
22286063 554 - adding more tests to get coverage up a little higher,
555 mostly testing errors and edge cases.
556 - test coverage is now at 99%
aa448b16 557
558 * Class::MOP
559 - no longer optionally exports to UNIVERSAL::meta or
560 creates a custom metaclass generator, use the
561 metaclass pragma instead.
22286063 562
563 * Class::MOP::Class
564 - fixed a number of minor issues which came up in the
565 error/edge-case tests
566
567 * Class::MOP::Attribute
568 - fixed a number of minor issues which came up in the
569 error/edge-case tests
570
0b8eb325 571 * examples/
ea263060 572 - fixing the AttributesWithHistory example, it was broken.
663f8198 573
550d56db 5740.06 Thurs Feb. 9, 2006
677eb158 575 * metaclass
550d56db 576 - adding new metaclass pragma to make setting up the
677eb158 577 metaclass a little more straightforward
7b31baf4 578
579 * Class::MOP
580 - clean up bootstrapping to include more complete
581 attribute definitions for Class::MOP::Class and
582 Class::MOP::Attribute (accessors, readers, writers,
583 etc.) ... it is redundant, but is useful meta-info
584 to have around.
677eb158 585
99e5b7e8 586 * Class::MOP::Class
587 - fixing minor meta-circularity issue with &meta, it
588 is now more useful for subclasses
7b31baf4 589 - added &get_attribute_map as an accessor for the
590 hash of attribute meta objects
c9e77dbb 591 - &compute_all_applicable_attributes now just returns
592 the attribute meta-object, rather than the HASH ref
593 since all the same info can be gotten from the
594 attribute meta-object itself
595 - updated docs & tests to reflect
5f3c057a 596 - added &clone_instance method which does a deep clone
597 of the instance structure created by &construct_instance
598 - added docs & tests for this
550d56db 599 - added Clone as a dependency
5f3c057a 600 - added &new_object and &clone_object convience methods to
601 return blessed new or cloned instances
2a7575a6 602 - they handle Class::MOP::Class singletons correctly too
5f3c057a 603 - added docs & tests for this
2a7575a6 604 - cleaned up the &constuct_class_instance so that it behaves
605 more like &construct_instance (and managed the singletons too)
550d56db 606 - added the &check_metaclass_compatibility method to make sure
607 that metaclasses are upward and downward compatible.
608 - added tests and docs for this
5f3c057a 609
99e5b7e8 610 * examples/
611 - adjusting code to use the &Class::MOP::Class::meta
612 fix detailed above
677eb158 613 - adjusting code to use the metaclass pragma
99e5b7e8 614
aa9c883e 6150.05 Sat Feb. 4, 2006
2e41896e 616 * Class::MOP::Class
617 - added the &attribute_metaclass and &method_metaclass
351bd7d4 618 attributes which contain a metaclass name to use for
2e41896e 619 attributes/methods respectively
351bd7d4 620
621 * Class::MOP
622 - bootstrap additional attributes for Class::MOP::Class
2e41896e 623
624 * examples/
625 - adjusted the example code and tests to use the new
626 &attribute_metaclass feature of Class::MOP::Class
aa9c883e 627 - added new example:
628 - LazyClass
2e41896e 629
d7c2cbe3 6300.04 Fri Feb. 3, 2006
d6fbcd05 631 * Class::MOP::Class
632 - some documentation suggestions from #perl6
633
634 * Class::MOP::Attribute
635 - improved error messages
636
637 * examples/
638 - added new examples:
639 - AttributesWithHistory
d7c2cbe3 640 - ClassEncapsultedAttributes
343203ee 641
9ec169fe 6420.03 Fri Feb. 3, 2006
643 - converted to Module::Build instead of EU::MM
644
645 * Class::MOP::Attribute
646 - refactored method generation code
647 - attributes are now associated with class directly
648
f71f4295 649 * examples/
9ec169fe 650 - refactored the InsideOut example to take advantage
651 of the Class::MOP::Attribute refactoring
f71f4295 652 - changed example files to .pod files and hide thier
653 package names from PAUSE (I don't want to own these
654 namespaces really, they are just examples)
9ec169fe 655
a57c7fa2 6560.02 Thurs Feb. 2, 2006
657 - moving examples from t/lib/* to examples/*
658 - adding POD documentation to the examples
659
a2e85e6c 6600.01 Thurs Feb. 2, 2006
92af7fdf 661 - Initial release