1 Revision history for Perl extension Class-MOP.
5 - rebless_instance now returns the instance
6 it has just blessed, this is mostly to
8 - set the attr correctly in rebless_instance
9 when it has no init_arg
11 0.54 Fri. March, 14, 2008
14 - making sure that load_class never gets
15 passed a value from @_ or $_ to squash
16 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
19 - make_{immutable,mutable} now return 1
21 - improved error handling in ->create method
22 - rebless_instance now takes extra params which
23 will be used to populate values
24 - added tests for this
27 - localizing the Data::Dumper configurations so
28 that it does not pollute others (RT #33509)
35 - these classes no longer define their own ->meta,
36 but instead just inherit from Class::MOP::Object
38 * Class::MOP::Instance
40 - these classes now inherit from Class::MOP::Object
43 - fixed the filename length on several
44 test files so we install on VMS better
46 - fixed incorrect use of catdir when it
47 should be catfile (RT #32385)
49 0.53 Thurs. Feb. 14, 1008
50 ~~ several doc. fixes and updates ~~
53 Class::MOP::Method::Constructor
55 - making init_arg accept an undefined value
56 to indicate that no constructor args can
57 be passed (thanks to nothingmuch)
58 - added tests for this
59 - added attribute initializer attribute (rjbs)
62 - making this use the new init_arg => undef
63 feature instead of the silly hack from
64 before (thanks to nothingmuch)
66 0.52 Tues. Jan. 22, 2008
68 - fixed bug in rebless_instance
71 * Class::MOP::Method::Constructor
72 - removed assumptions about the existence of
75 0.51 Mon. Jan. 14, 2008
76 ~~~ some misc. doc. fixes ~~~
77 ~~ updated copyright dates ~~
80 - now sets the IS_RUNNING_ON_5_10
81 constant so that we can take advantage
82 of some of the nice bits of 5.10
85 - uses the IS_RUNNING_ON_5_10 flag to
86 optimize the &linearized_isa method
87 and avoid the hack/check for circular
88 inheritence in &class_precedence_list
89 - added rebless_instance method (Sartak)
90 - added tests for this
92 * Class::MOP::Immutable
93 - the immutable class now keeps track of
94 the transformer which immutablized it
96 * Class::MOP::Instance
97 - added rebless_instance_structure method (Sartak)
98 - added tests for this
100 0.50 Fri. Dec. 21, 2007
102 - fixed bug in immutable to make sure that
103 transformation arguments are saved
105 - added tests for this
107 * Class::MOP::Immutable
108 - fixed a bug (see above)
110 * Class::MOP::Attribute
113 0.49 Fri. Dec. 14, 2007
114 !! Class::MOP now loads 2 x faster !!
115 !! with XS speedups (thanks konobi) !!
118 - removed the dependency on B
119 - added two XS functions (thanks konobi)
120 - get_code_info($code) which replaces all
121 the B fiddling we were doing with
122 faster/leaner XS level fiddling
123 - check_package_cache_flag($pkg_name) which
124 returns the PL_sub_generation variable to
125 be used to help manage method caching.
128 In 5.10 or greater this will actually
129 use the mro::get_pkg_gen instead to give
130 even more accurate caching information.
131 blblack++ for that stuff :)
134 - added the &subclasses method (thanks rlb)
135 - added the update_package_cache_flag and
136 reset_package_cache_flag which help keep
137 track of when we need to re-fetch the
139 - Several small improvements to take advantage
140 of the new method map caching features
142 0.48 Mon. Nov. 26, 2007
143 * Class::MOP::Attribute
144 - fixed get_read/write_method to handle the
145 HASH ref case, which makes the
146 get_read/write_method_ref handle it too.
147 - added more tests for this
149 0.47 Sat. Nov. 24, 2007
150 * Class::MOP::Attribute
151 - fixed misspelling in get_write_method_ref
152 - added more tests for this
154 0.46 Fri. Nov. 23, 2007
156 - added the linearized_isa method instead of constantly
157 pruning duplicate classes (this will be even more
158 useful in the 5.10-compat version coming soon)
160 * Class::MOP::Attribute
161 - added the get_read_method_ref and get_write_method_ref
162 methods which allow you to retrieve a CODE ref which
163 can always be used to read or write an attribute.
165 0.45 Thurs. Nov. 13, 2007
166 * Class::MOP::Attribute
167 - Fix error message on confess (groditi)
169 0.44 Thurs. Nov. 13, 2007
170 - Apparently I didn't make dist correctly (groditi)
172 0.43 Thurs. Nov. 13, 2007
174 - Add support for the 'builder' attribute (groditi)
177 - optimise metaclass-already-exists check in
178 construct_class_instance (groditi)
179 - duplicate check into initialize to save a
180 call through (groditi)
182 * Class::MOP::Attribute
183 - Add support for the 'builder' attribute (groditi)
184 - Make predicates check for the existence of a value, not whether
185 it is defined (groditi)
187 * Class::MOP::Instance
188 - Make predicates check for the existence of a value, not whether
189 it is defined (groditi)
191 * Class::MOP::Method::Accessor
192 - made this a subclass of Class::MOP::Method::Generated
193 - removed the relevant attributes
195 * Class::MOP::Method::Constructor
196 - fixed the cached values we had to be more sane
197 - made this a subclass of Class::MOP::Method::Generated
198 - fixed generated constructor so it properly handles
200 - added tests for this
201 - added the option to allow for both inlined and
202 non-inlined constructors.
203 - Update inlined methods for builder and predicate changes (groditi)
205 * Class::MOP::Method::Generated
206 - added this class as an abstract base for the
207 Class::MOP::Method::{Constructor,Accessor} classes
208 - added tests for this
211 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
212 - Tests for new predicate behavior (and corrections to old tests) (groditi)
215 - Update ArrayRef based class example to work with predicate changes
217 0.42 Mon. July 16, 2007
218 !!! Horray for mst, he fixed it !!!
220 * Class::MOP::Package
221 - alter symbol table handling to deal with 5.8.x and 5.9.x
224 - Get rid of the crappy workaround from 0.40/41
226 0.41 Sun. July 15, 2007
228 Arghh!!! My TODO test didn't work, so I handle
229 it manually now so that people can use this
230 with 5.9.5/bleadperl without issue.
232 0.40 Tues, July 3, 2007
234 ~ marked a test in 003_methods.t as TODO
235 for perl 5.9.5 (this test is irrelvant to
236 the module functioning on 5.9.5 for the most
239 0.39 Mon. June 18, 2007
240 * Class::MOP::Immutable
241 - added make_metaclass_mutable + docs (groditi)
242 - removed unused variable
243 - added create_immutable_transformer
244 necessary for sane overloading of immutable behavior
245 - tests for this (groditi)
248 - Immutability can now be undone,
249 added make_mutable + tests + docs (groditi)
250 - Massive changes to the way Immutable is done
251 for details see comments next to make_immutable
252 This fixes a bug where custom metaclasses broke
253 when made immutable. We are now keeping one immutable
254 metaclass instance per metaclass instead of just one
255 to prevent isa hierarchy corruption. Memory use will go
256 up, but I suspect it will be neglible.
257 - New tests added for this behavior. (groditi)
259 0.38 Thurs. May 31, 2007
260 ~~ More documentation updates ~~
262 * Class::MOP::Package
263 - we now deal with stub methods properly
264 - added tests for this
265 - fixed some tests failing on 5.9.5 (thanks blblack)
267 * Class::MOP::Attribute
268 - added get_read_method and get_write_method
269 thanks to groditi for this code, tests
271 - added tests and POD for this
274 - fixed RT issue #27329, clone object now
275 handles undef values correctly.
276 - added tests for this
277 - Corrected anon-class handling so that they
278 will not get reaped when instances still
279 exist which need to reference them. This is
280 the correct behavior, hopefully this is an
281 obscure enough feature that there are not too
282 many work arounds out in the wild.
283 - added tests for this by groditi
284 - updated docs to explain this
287 - load custom metaclasses automatically (thanks groditi)
288 - added tests for this behavior
290 0.37 Sat. March 10, 2007
291 ~~ Many, many documentation updates ~~
294 - added &load_class and &is_class_loaded
295 - added tests and docs for these
297 * Class::MOP::Attribute
298 - default now checks the instance with defined to
299 avoid setting off bool-overloads (found by Carl Franks)
303 - bad name in a test, causing meaningless failuress.
309 - All attribute names are now consistent and follow Perl 6
310 style (prefixed with the sigil, and ! as the twigil for
311 private attrs). This should not affect any code, unless
312 you broke encapsulation, in which case, it is your problem
315 !! Class::MOP::Class::Immutable has been removed
317 * Class::MOP::Method::Constructor
318 - this has been moved out of Class::MOP::Class::Immutable
319 and is a proper subclass of Class::MOP::Method now.
322 - this module now uses Class::MOP::Immutable for the
323 immutable transformation instead of
324 Class::MOP::Class::Immutable.
326 + Class::MOP::Immutable
327 - this module now controls the transformation from a mutable
328 to an immutable version of the class. Docs for this will
329 be coming eventually.
332 0.36 Sun. Nov. 5, 2006
334 - added a few 'no warnings' lines to keep annoying
335 (and meaningless) warnings from chirping during
339 - some more bootstrapping is now done on the new
342 * Class::MOP::Class::Immutable
344 - constructor generation is now handled by
345 the Class::MOP::Method::Constructor class
347 * Class::MOP::Method::Constructor
348 - created this to handle constructor generation
349 in Class::MOP::Class::Immutable
351 * Class::MOP::Attribute
353 - attributes now delegate to the
354 Class::MOP::Method::Accessor to generate
357 * Class::MOP::Method::Accessor
358 - all accessor generation functions from
359 Class::MOP::Attribute have been moved here
361 0.35 Sat. Sept. 30, 2006
363 * scripts/class_browser.pl
364 - initial prototype of a class browser, more
365 on this to come. Comments and patches are
369 - All Class::MOP::* accessors are no longer
370 re-generated in the bootstrap, instead
371 they are aliased from the originals
372 - fixed tests to reflect
373 - added Class::MOP::Method (and its subclasses)
375 - adjusted tests for this
376 - added the Class::MOP::Instance attributes
381 - methods are no longer blessed CODE refs
382 but are actual objects which can be CODE-ified
383 - adjusted tests to compensate
384 - adjusted docs for this
387 - changed how methods are dealt with to
388 encapsulate most of the work into the
389 &get_method_map method
390 - made several adjustments for the change
391 in Class::MOP::Method
392 - &add_attribute now checks if you are adding
393 a duplicate name, and properly removes the
394 old one before installing the new one
395 - added tests for this
396 - adjusted docs for this
398 * Class::MOP::Class::Immutable
399 - added caching of &get_method_map
400 - fixed issue with &get_package_symbol
401 - cleaned up the methods that die (patch by David Wheeler)
403 * Class::MOP::Package
404 - added filtering capabilities to
405 &list_all_package_symbols
407 0.34 Sat. Aug. 26, 2006
409 - added the %:methods attribute, which like
410 the $:version and such just actually goes
411 to the symbol table to get it's stuff.
412 However, it makes the MOP more complete.
414 - The &create method now requires that all
415 but the package name now is passed in as
416 named parameters. See docs for more info.
417 - updated docs and tests for this
420 - added &dump method to easily Data::Dumper
424 - cleaned up the initialization of attributes
425 which do not store things in the instance
426 - added the %:methods attribute definition to
429 ~ lots of misc. test cleanup
431 0.33 Sat. Aug. 19, 2006
433 - moved the metaclass cache out of here
434 and it is now in Class::MOP itself.
437 - moved all the metaclass cache stuff here
438 - fixed all tests for this
440 * Class::MOP::Attribute
441 - reference values (other than CODE refs)
442 are no longer allowed for defaults
443 - added tests for this
445 * Class::MOP::Package
446 - fixed an issue with perl 5.8.1 and how it deals
447 with symbol tables. The namespace hash is now
448 always reloaded from the symbol table.
450 ~ lots of misc. documentation cleanup
452 0.32 Sat. Aug. 12, 2006
453 + added Class::MOP::Object so that the
454 metamodel is more complete (and closer
455 to what Perl 6 will probably be).
457 * Class::MOP::Package
458 - refactored entire class, this is now
459 the primary gateway between the metaclass
460 and the Perl 5 symbol table
461 - added many tests for this
462 - this class is now a subclass of
464 - added some tests to reflect this
467 - refactored all symbol table access to
468 use Class::MOP::Package methods instead
471 - adding the $:version attribute in the bootstrap
472 so that Module has a version as an attribute
473 - see comment in Class::MOP for details
474 - added the $:authority attribute to this module
475 as well as an &identifier method, to bring us
476 ever closer to Perl 6 goodness
477 - I have added $AUTHORITY to all the modules
478 - added tests for this
480 * Class::MOP::Instance
481 - added &deinitialize_slot for removing slots
483 - added tests for this
485 * Class::MOP::Attribute
486 - added support for &deinitialize_slot for removing
487 slots from an instance
488 - added tests for this
490 0.31 Sat. July 15, 2006
493 - added &find_method_by_name to locate a method
494 anywhere within the class hierarchy
496 * Class::MOP::Attribute
497 - added &set_value and &get_value for getting
498 the value of the attribute for a particular
501 0.30 Wed. July 5, 2006
502 ---------------------------------------
503 This is the first version of Class::MOP
504 to introduce the immutable features which
505 will be used for optimizating the MOP.
506 This support should still be considered
507 experimental, but moving towards stability.
508 ---------------------------------------
510 * Created Class::MOP::Class::Immutable
512 * Created the Class::MOP::Package and
513 Class::MOP::Module classes to more
514 closely conform to Perl 6's meta-model
517 - now inherits from Class::MOP::Module
518 - several methods moved to ::Module and
519 ::Package and now inherited
520 - added tests for this
522 * Class::MOP::Instance
523 - added an is_inlinable method to allow other
524 classes to check before they attempt to optimize.
525 - added an inline_create_instance to inline
526 instance creation (of course)
529 - the Class::MOP::Class::*_package_variable
530 methods are all now methods of Class::MOP::Package
531 and called *_package_symbol instead. This is
532 because they are now more general purpose symbol
533 table manipulation methods.
535 0.29_02 Thurs. June 22, 2006
536 ++ DEVELOPER RELEASE ++
538 - small change in &create so that it behaves
539 properly when inherited
540 - small fix to &clone_instance
542 0.29_01 Fri. May 12, 2006
543 ++ DEVELOPER RELEASE ++
544 - This release works in combination with
545 Moose 0.09_01, it is a developer release
546 because it introduces a new instance
547 sub-protocol and has not yet been
551 - anon-classes are now properly garbage collected
552 - added tests for this
553 - improved method modifier wrapping
555 * Class::MOP::Instance
556 - added new instance protocol
557 - added tests for this
558 - changed all relevant modules and examples
560 - Class::MOP::Attribute
564 - you no longer need to specify the metaclass
565 itself, if it is not there, Class::MOP::Class
567 - updated tests for this
570 - added ArrayBasedStorage example to show
571 instance storage using ARRAY refs instead of
573 - added tests for this
574 - InsideOutClass is totally revised using the
575 new instance protocol
576 - added more tests for this
578 0.26 Mon. April 24, 2006
580 - added find_attribute_by_name method
581 - added tests and docs for this
582 - some small optimizations
584 * Class::MOP::Attribute
585 - some small optimizations
587 0.25 Thurs. April 20, 2006
589 - added create_anon_class for creating anonymous classes
590 - added tests for this
591 - added get_all_metaclasses, get_all_metaclass_names
592 and get_all_metaclass_instances method to allow
593 access to all the cached metaclass objects.
594 - attribute slot initialization is now the responsibility
595 of the attribute itself, and construct_instance now
596 delegates appropriately
598 * Class::MOP::Attribute
599 - attribute slot initialization is now the responsibility
600 of the attribute itself, so we added a method for it
601 called initialize_instance_slot
604 - adjusted all the examples to use the new attribute
605 initialize_instance_slot method
607 0.24 Tues. April 11, 2006
609 - cleaned up how the before/after/around method
610 modifiers get named with Sub::Name
612 0.23 Thurs. March 30, 2006
614 - fixed the way attribute defaults are handled
615 during instance construction (bug found by chansen)
617 * Class::MOP::Attribute
618 - read-only accessors ('reader') will now die if
619 passed more than one argument (attempting to write
621 - added tests for this
622 - adjusted all /example files to comply
624 0.22 Mon. March 20, 2006
626 - localized $@ in the *_package_variable functions
627 because otherwise, it does ugly things in Moose.
628 - added test case for this
630 0.21 Wed. March 15, 2006
632 - fixed issue where metaclasses are reaped from
633 our cache in global destruction, and so are not
634 available in DESTORY calls
636 0.20 Thurs. March 2, 2006
637 - removed the dependency for Clone since
638 we no longer to deep-cloning by default.
641 - added &package_name, &name and
642 &fully_qualified_name methods, some of
643 which were formerly private subs in
646 * Class::MOP::Method::Wrapped
647 - allows for a method to be wrapped with
648 before, after and around modifiers
649 - added tests and docs for this feature
652 - improved &get_package_symbol
653 - &version and &superclasses now use it
654 - methods are now blessed into Class::MOP::Method
656 - added methods to install CLOS-style method modifiers
657 - &add_before_method_modifier
658 - &add_after_method_modifier
659 - &add_around_method_modifier
660 - added tests and docs for these
661 - added &find_next_method_by_name which finds the
662 equivalent of SUPER::method_name
664 0.12 Thurs. Feb 23, 2006
665 - reduced the dependency on B, no need to always
669 - added docs to the C3 method dispatch order test
670 - fixed missing Algorithm::C3 dependency by making
671 the test skip if it is not installed
673 0.11 Mon Feb. 20, 2006
675 - added example of changing method dispatch order to C3
678 - changed how clone_instance behaves, it now only does a
679 shallow clone (see docs for more details)
680 - added docs and tests
682 0.10 Tues Feb. 14, 2006
683 ** This release was mostly about writing more tests and
684 cleaning out old and dusty code, the MOP should now
685 be considered "ready to use".
687 - adding more tests to get coverage up a little higher,
688 mostly testing errors and edge cases.
689 - test coverage is now at 99%
692 - no longer optionally exports to UNIVERSAL::meta or
693 creates a custom metaclass generator, use the
694 metaclass pragma instead.
697 - fixed a number of minor issues which came up in the
698 error/edge-case tests
700 * Class::MOP::Attribute
701 - fixed a number of minor issues which came up in the
702 error/edge-case tests
705 - fixing the AttributesWithHistory example, it was broken.
707 0.06 Thurs Feb. 9, 2006
709 - adding new metaclass pragma to make setting up the
710 metaclass a little more straightforward
713 - clean up bootstrapping to include more complete
714 attribute definitions for Class::MOP::Class and
715 Class::MOP::Attribute (accessors, readers, writers,
716 etc.) ... it is redundant, but is useful meta-info
720 - fixing minor meta-circularity issue with &meta, it
721 is now more useful for subclasses
722 - added &get_attribute_map as an accessor for the
723 hash of attribute meta objects
724 - &compute_all_applicable_attributes now just returns
725 the attribute meta-object, rather than the HASH ref
726 since all the same info can be gotten from the
727 attribute meta-object itself
728 - updated docs & tests to reflect
729 - added &clone_instance method which does a deep clone
730 of the instance structure created by &construct_instance
731 - added docs & tests for this
732 - added Clone as a dependency
733 - added &new_object and &clone_object convience methods to
734 return blessed new or cloned instances
735 - they handle Class::MOP::Class singletons correctly too
736 - added docs & tests for this
737 - cleaned up the &constuct_class_instance so that it behaves
738 more like &construct_instance (and managed the singletons too)
739 - added the &check_metaclass_compatibility method to make sure
740 that metaclasses are upward and downward compatible.
741 - added tests and docs for this
744 - adjusting code to use the &Class::MOP::Class::meta
746 - adjusting code to use the metaclass pragma
748 0.05 Sat Feb. 4, 2006
750 - added the &attribute_metaclass and &method_metaclass
751 attributes which contain a metaclass name to use for
752 attributes/methods respectively
755 - bootstrap additional attributes for Class::MOP::Class
758 - adjusted the example code and tests to use the new
759 &attribute_metaclass feature of Class::MOP::Class
763 0.04 Fri Feb. 3, 2006
765 - some documentation suggestions from #perl6
767 * Class::MOP::Attribute
768 - improved error messages
771 - added new examples:
772 - AttributesWithHistory
773 - ClassEncapsultedAttributes
775 0.03 Fri Feb. 3, 2006
776 - converted to Module::Build instead of EU::MM
778 * Class::MOP::Attribute
779 - refactored method generation code
780 - attributes are now associated with class directly
783 - refactored the InsideOut example to take advantage
784 of the Class::MOP::Attribute refactoring
785 - changed example files to .pod files and hide thier
786 package names from PAUSE (I don't want to own these
787 namespaces really, they are just examples)
789 0.02 Thurs Feb. 2, 2006
790 - moving examples from t/lib/* to examples/*
791 - adding POD documentation to the examples
793 0.01 Thurs Feb. 2, 2006