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