1 Revision history for Perl extension Class-MOP.
5 - We (us maintainers) now run all tests with XS and then without
6 XS, which should help us catch skew between the XS/pure Perl
9 0.65 Mon September 1, 2008
10 For those not following the series of dev releases, the changes
11 from 0.64 from 0.65 can mostly be summed up as a lot performance
12 improvements by nothingmuch, including new optional XS versions of
13 some methods. Also, Class::MOP now works _without_ any XS modules,
14 for sad systems without a compiler.
17 - Added name and package_name XS accessors, and make sure all
18 the XS and Perl versions work the same way. (Dave Rolsky)
21 - The XS versions of various methods just returned undef when
22 called class methods, rather than dying like the pure Perl
23 versions. (Dave Rolsky)
25 0.64_07 Fri August 29, 2008
27 - Silenced warnings that managed to break Moose tests when XS
28 was loaded. (Dave Rolsky)
29 - Some XS versions of methods were ignored because of typos in
32 0.64_06 Mon August 25, 2008
34 - Another MS VC++ fix, cannot declare a variable in the middle
35 of a scope (Taro Nishino).
37 0.64_05 Sun August 24, 2008
39 - None of the dev releases actually loaded the XS properly, but
40 we silently fell back to the pure Perl version of the
44 - Replaced some code that used functions not available on Visual
45 C++ with some Perl XS API bits (Dave Rolsky).
47 0.64_04 Sat August 23, 2008
49 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
51 * pod.t and pod_coveraget.t
52 - These are no longer shipped with the tarball because of bogus
53 failures from CPAN testers. (Dave Rolsky)
55 0.64_03 Thu August 21, 2008
57 - Some (legit) code was misparsed by earlier 5.8.x
58 releases. (nothingmuch)
61 - Fix a constant in void context warning (nothingmuch)
63 0.64_02 Thu August 21, 2008
64 * Makefile.PL and Class::MOP
65 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
68 - Add missing prereqs that got lost in the switch away from
71 * Class::MOP::Instance
72 - New method - get_all_attributes (nothingmuch)
74 0.64_01 Wed August 20, 2008
76 - We now check to see if you have a compiler. If you don't, the
77 module installs without some XS bits, but will work the same
78 as with XS. This should make it easier to install on platforms
79 without a compiler (like Windows). (Dave Rolsky)
82 - Perl 6 style attribute naming replaced with sane style ('methods', not
83 '%!methods'). These changes should not impact any existing API uses.
87 - Quite a number of optimizations based on profiling, including
88 allowing constructors to take hash references instead of
89 hashes, duplicating some frequently used code in XS, and
90 making constructors immutable. These changes should not impact
91 any existing API uses. (nothingmuch)
94 - Constructors now respect the meta attributes of their subclasses,
95 facilitating MOP extensibility. More related changes will happen in the
96 next several releases. (nothingmuch)
99 - New method - get_all_methods, replaces the deprecated
100 compute_all_applicable_methods. get_all_attributes provided for
101 consistency (nothingmuch)
102 - New method - wrap_method was refactored out of get_method_map
104 - New API for meta instance invalidation - invalidate_meta_instance,
105 invalidate_meta_instances, add_dependent_meta_instance,
106 remove_dependent_meta_instance, called automatically when attribute
107 definitions change and allows notification of dependent subclasses.
110 0.64 Sun August 3, 2008
111 * Class::MOP::Immutable
112 - fixing subtle edge case in immutable when you
114 - clean up option processing (nothingmuch)
116 * Class::MOP::Instance
117 - inlined initialize slot didn't match
118 non-inlined (nothingmuch)
120 0.63 Mon July 7, 2008
122 - load_class will initialize a metaclass even if
123 the class is already loaded (sartak)
124 - load_class now returns the metaclass instance
125 instead of just 1 (sartak)
128 - better error messages (sartak and Dave Rolsky)
130 0.62 Wed June 18, 2008
131 - in is_class_loaded, recognize scalar references (as opposed to globs) in
132 the symbol table as methods (these are optimized constant subs)
134 0.61 Fri. June 13, 2008
135 - Okay, lets give this another try and see if PAUSE
136 recognizes it correct this time.
138 0.60 Thurs. Jun 12, 2008
139 - Fixed a version number issue by bumping all modules
142 0.59 Thurs. Jun 12, 2008
143 !! Several fixes resulting in yet another 25-30% speedup !!
146 - now stores the instance of the instance
147 metaclass to avoid needless recomputation
148 and deletes it when the cache is blown
149 - introduce methods to query Class::MOP::Class for
150 the options used to make it immutable as well as
151 the proper immutable transformer. (groditi)
153 * Class::MOP::Package
154 - {add, has, get, remove}_package_symbol all
155 now accept a HASH ref argument as well as the
156 string. All internal usages now use the HASH
160 - MOP.xs does sanity checks on the coderef
162 - is_class_loaded check now uses code that
163 was improved in Moose's ClassName type
165 - nonsensical (undef, empty, reference) class
166 names now throw a more direct error in
168 - tests for this and other aspects of
174 Class::MOP::Method::Wrapped
175 Class::MOP::Attribute
176 - switched usage of reftype to ref because
179 0.58 Thurs. May 29, 2008
180 (late night release engineering)--
182 - fixing the version is META.yml, no functional
183 changes in this release
185 0.57 Wed. May 28, 2008
186 !! Several speedups resulting in 20-25% speedups !!
187 || (thanks to konobi, groditi, mst & CataMoose) !!
190 - made get_method_map use list_all_package_symbols
191 instead of manually grabbing each symbol
192 - streamlining &initialize somewhat, since it gets
195 * Class::MOP::Package
196 - made {get, has}_package_symbol not call
198 - inlining a few calls to &name with
199 direct HASH access key access
200 - added get_all_package_symbols to fetch
201 a HASH of items based on a type filter
202 similar to list_all_package_symbols
203 - added tests for this
206 Class::MOP::Method::Constructor
207 Class::MOP::Method::Generated
208 Class::MOP::Method::Accessor
209 - added more descriptive error message to help
210 keep people from wasting time tracking an error
211 that is easily fixed by upgrading.
213 * Class::MOP::Immutable
214 - Don't inline a destructor unless the user actually
216 - added tests for this
218 0.56 Saturday, May 24, 2008
220 - we now get the &check_package_cache_flag
221 function from MRO::Compat
222 - All XS based functionality now has a
223 Pure Perl alternative
224 - the CLASS_MOP_NO_XS environment variable
225 can now be used to force non-XS versions
228 * Class::MOP::Attribute
229 - add has_read_method and has_write_method
230 - get_{read,write}_method_ref now wraps the
231 anon-sub ref in the method metaclass when
233 - added tests for this
235 * Class::MOP::Immutable
236 - added the ability to "wrap" methods when
237 making the class immutable
240 - now handling the edge case of ->meta->identifier
241 dying by wrapping add_package_symbol to specifically
242 allow for it to work.
243 - added tests for this
245 * Class::MOP::Attribute
247 Class::MOP::Immutable
248 - any time a method meta object is constructed
249 we make sure to pass the correct package and
250 method name information
253 Class::MOP::Method::Wrapped
254 Class::MOP::Method::Generated
255 Class::MOP::Method::Accessor
256 Class::MOP::Method::Consructor
257 - the &wrap constructor method now requires that a
258 'package_name' and 'name' attribute are passed. This
259 is to help support the no-XS version, and will
260 throw an error if these are not supplied.
261 - all these classes are now bootstrapped properly
262 and now store the package_name and name attributes
265 ~ Build.PL has been removed since the
266 Module::Install support has been removed
268 0.55 Mon. April 28, 2008
269 - All classes now have proper C3 MRO support
270 - added MRO::Compat as a dependency to allow
271 for the C3 MRO support to Just Work in all
275 - rebless_instance now returns the instance
276 it has just blessed, this is mostly to
278 - set the attr correctly in rebless_instance
279 when it has no init_arg
280 - tweaked &linear_isa and &class_precedence_list
281 to support c3 classes.
283 0.54 Fri. March, 14, 2008
286 - making sure that load_class never gets
287 passed a value from @_ or $_ to squash
288 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
291 - make_{immutable,mutable} now return 1
293 - improved error handling in ->create method
294 - rebless_instance now takes extra params which
295 will be used to populate values
296 - added tests for this
299 - localizing the Data::Dumper configurations so
300 that it does not pollute others (RT #33509)
306 Class::MOP::Attribute
307 - these classes no longer define their own ->meta,
308 but instead just inherit from Class::MOP::Object
310 * Class::MOP::Instance
311 Class::MOP::Immutable
312 - these classes now inherit from Class::MOP::Object
315 - fixed the filename length on several
316 test files so we install on VMS better
318 - fixed incorrect use of catdir when it
319 should be catfile (RT #32385)
321 0.53 Thurs. Feb. 14, 1008
322 ~~ several doc. fixes and updates ~~
325 Class::MOP::Method::Constructor
326 Class::MOP::Attribute
327 - making init_arg accept an undefined value
328 to indicate that no constructor args can
329 be passed (thanks to nothingmuch)
330 - added tests for this
331 - added attribute initializer attribute (rjbs)
334 - making this use the new init_arg => undef
335 feature instead of the silly hack from
336 before (thanks to nothingmuch)
338 0.52 Tues. Jan. 22, 2008
340 - fixed bug in rebless_instance
343 * Class::MOP::Method::Constructor
344 - removed assumptions about the existence of
347 0.51 Mon. Jan. 14, 2008
348 ~~~ some misc. doc. fixes ~~~
349 ~~ updated copyright dates ~~
352 - now sets the IS_RUNNING_ON_5_10
353 constant so that we can take advantage
354 of some of the nice bits of 5.10
357 - uses the IS_RUNNING_ON_5_10 flag to
358 optimize the &linearized_isa method
359 and avoid the hack/check for circular
360 inheritence in &class_precedence_list
361 - added rebless_instance method (Sartak)
362 - added tests for this
364 * Class::MOP::Immutable
365 - the immutable class now keeps track of
366 the transformer which immutablized it
368 * Class::MOP::Instance
369 - added rebless_instance_structure method (Sartak)
370 - added tests for this
372 0.50 Fri. Dec. 21, 2007
374 - fixed bug in immutable to make sure that
375 transformation arguments are saved
377 - added tests for this
379 * Class::MOP::Immutable
380 - fixed a bug (see above)
382 * Class::MOP::Attribute
385 0.49 Fri. Dec. 14, 2007
386 !! Class::MOP now loads 2 x faster !!
387 !! with XS speedups (thanks konobi) !!
390 - removed the dependency on B
391 - added two XS functions (thanks konobi)
392 - get_code_info($code) which replaces all
393 the B fiddling we were doing with
394 faster/leaner XS level fiddling
395 - check_package_cache_flag($pkg_name) which
396 returns the PL_sub_generation variable to
397 be used to help manage method caching.
400 In 5.10 or greater this will actually
401 use the mro::get_pkg_gen instead to give
402 even more accurate caching information.
403 blblack++ for that stuff :)
406 - added the &subclasses method (thanks rlb)
407 - added the update_package_cache_flag and
408 reset_package_cache_flag which help keep
409 track of when we need to re-fetch the
411 - Several small improvements to take advantage
412 of the new method map caching features
414 0.48 Mon. Nov. 26, 2007
415 * Class::MOP::Attribute
416 - fixed get_read/write_method to handle the
417 HASH ref case, which makes the
418 get_read/write_method_ref handle it too.
419 - added more tests for this
421 0.47 Sat. Nov. 24, 2007
422 * Class::MOP::Attribute
423 - fixed misspelling in get_write_method_ref
424 - added more tests for this
426 0.46 Fri. Nov. 23, 2007
428 - added the linearized_isa method instead of constantly
429 pruning duplicate classes (this will be even more
430 useful in the 5.10-compat version coming soon)
432 * Class::MOP::Attribute
433 - added the get_read_method_ref and get_write_method_ref
434 methods which allow you to retrieve a CODE ref which
435 can always be used to read or write an attribute.
437 0.45 Thurs. Nov. 13, 2007
438 * Class::MOP::Attribute
439 - Fix error message on confess (groditi)
441 0.44 Thurs. Nov. 13, 2007
442 - Apparently I didn't make dist correctly (groditi)
444 0.43 Thurs. Nov. 13, 2007
446 - Add support for the 'builder' attribute (groditi)
449 - optimise metaclass-already-exists check in
450 construct_class_instance (groditi)
451 - duplicate check into initialize to save a
452 call through (groditi)
454 * Class::MOP::Attribute
455 - Add support for the 'builder' attribute (groditi)
456 - Make predicates check for the existence of a value, not whether
457 it is defined (groditi)
459 * Class::MOP::Instance
460 - Make predicates check for the existence of a value, not whether
461 it is defined (groditi)
463 * Class::MOP::Method::Accessor
464 - made this a subclass of Class::MOP::Method::Generated
465 - removed the relevant attributes
467 * Class::MOP::Method::Constructor
468 - fixed the cached values we had to be more sane
469 - made this a subclass of Class::MOP::Method::Generated
470 - fixed generated constructor so it properly handles
472 - added tests for this
473 - added the option to allow for both inlined and
474 non-inlined constructors.
475 - Update inlined methods for builder and predicate changes (groditi)
477 * Class::MOP::Method::Generated
478 - added this class as an abstract base for the
479 Class::MOP::Method::{Constructor,Accessor} classes
480 - added tests for this
483 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
484 - Tests for new predicate behavior (and corrections to old tests) (groditi)
487 - Update ArrayRef based class example to work with predicate changes
489 0.42 Mon. July 16, 2007
490 !!! Horray for mst, he fixed it !!!
492 * Class::MOP::Package
493 - alter symbol table handling to deal with 5.8.x and 5.9.x
496 - Get rid of the crappy workaround from 0.40/41
498 0.41 Sun. July 15, 2007
500 Arghh!!! My TODO test didn't work, so I handle
501 it manually now so that people can use this
502 with 5.9.5/bleadperl without issue.
504 0.40 Tues, July 3, 2007
506 ~ marked a test in 003_methods.t as TODO
507 for perl 5.9.5 (this test is irrelvant to
508 the module functioning on 5.9.5 for the most
511 0.39 Mon. June 18, 2007
512 * Class::MOP::Immutable
513 - added make_metaclass_mutable + docs (groditi)
514 - removed unused variable
515 - added create_immutable_transformer
516 necessary for sane overloading of immutable behavior
517 - tests for this (groditi)
520 - Immutability can now be undone,
521 added make_mutable + tests + docs (groditi)
522 - Massive changes to the way Immutable is done
523 for details see comments next to make_immutable
524 This fixes a bug where custom metaclasses broke
525 when made immutable. We are now keeping one immutable
526 metaclass instance per metaclass instead of just one
527 to prevent isa hierarchy corruption. Memory use will go
528 up, but I suspect it will be neglible.
529 - New tests added for this behavior. (groditi)
531 0.38 Thurs. May 31, 2007
532 ~~ More documentation updates ~~
534 * Class::MOP::Package
535 - we now deal with stub methods properly
536 - added tests for this
537 - fixed some tests failing on 5.9.5 (thanks blblack)
539 * Class::MOP::Attribute
540 - added get_read_method and get_write_method
541 thanks to groditi for this code, tests
543 - added tests and POD for this
546 - fixed RT issue #27329, clone object now
547 handles undef values correctly.
548 - added tests for this
549 - Corrected anon-class handling so that they
550 will not get reaped when instances still
551 exist which need to reference them. This is
552 the correct behavior, hopefully this is an
553 obscure enough feature that there are not too
554 many work arounds out in the wild.
555 - added tests for this by groditi
556 - updated docs to explain this
559 - load custom metaclasses automatically (thanks groditi)
560 - added tests for this behavior
562 0.37 Sat. March 10, 2007
563 ~~ Many, many documentation updates ~~
566 - added &load_class and &is_class_loaded
567 - added tests and docs for these
569 * Class::MOP::Attribute
570 - default now checks the instance with defined to
571 avoid setting off bool-overloads (found by Carl Franks)
575 - bad name in a test, causing meaningless failuress.
581 - All attribute names are now consistent and follow Perl 6
582 style (prefixed with the sigil, and ! as the twigil for
583 private attrs). This should not affect any code, unless
584 you broke encapsulation, in which case, it is your problem
587 !! Class::MOP::Class::Immutable has been removed
589 * Class::MOP::Method::Constructor
590 - this has been moved out of Class::MOP::Class::Immutable
591 and is a proper subclass of Class::MOP::Method now.
594 - this module now uses Class::MOP::Immutable for the
595 immutable transformation instead of
596 Class::MOP::Class::Immutable.
598 + Class::MOP::Immutable
599 - this module now controls the transformation from a mutable
600 to an immutable version of the class. Docs for this will
601 be coming eventually.
604 0.36 Sun. Nov. 5, 2006
606 - added a few 'no warnings' lines to keep annoying
607 (and meaningless) warnings from chirping during
611 - some more bootstrapping is now done on the new
614 * Class::MOP::Class::Immutable
616 - constructor generation is now handled by
617 the Class::MOP::Method::Constructor class
619 * Class::MOP::Method::Constructor
620 - created this to handle constructor generation
621 in Class::MOP::Class::Immutable
623 * Class::MOP::Attribute
625 - attributes now delegate to the
626 Class::MOP::Method::Accessor to generate
629 * Class::MOP::Method::Accessor
630 - all accessor generation functions from
631 Class::MOP::Attribute have been moved here
633 0.35 Sat. Sept. 30, 2006
635 * scripts/class_browser.pl
636 - initial prototype of a class browser, more
637 on this to come. Comments and patches are
641 - All Class::MOP::* accessors are no longer
642 re-generated in the bootstrap, instead
643 they are aliased from the originals
644 - fixed tests to reflect
645 - added Class::MOP::Method (and its subclasses)
647 - adjusted tests for this
648 - added the Class::MOP::Instance attributes
653 - methods are no longer blessed CODE refs
654 but are actual objects which can be CODE-ified
655 - adjusted tests to compensate
656 - adjusted docs for this
659 - changed how methods are dealt with to
660 encapsulate most of the work into the
661 &get_method_map method
662 - made several adjustments for the change
663 in Class::MOP::Method
664 - &add_attribute now checks if you are adding
665 a duplicate name, and properly removes the
666 old one before installing the new one
667 - added tests for this
668 - adjusted docs for this
670 * Class::MOP::Class::Immutable
671 - added caching of &get_method_map
672 - fixed issue with &get_package_symbol
673 - cleaned up the methods that die (patch by David Wheeler)
675 * Class::MOP::Package
676 - added filtering capabilities to
677 &list_all_package_symbols
679 0.34 Sat. Aug. 26, 2006
681 - added the %:methods attribute, which like
682 the $:version and such just actually goes
683 to the symbol table to get it's stuff.
684 However, it makes the MOP more complete.
686 - The &create method now requires that all
687 but the package name now is passed in as
688 named parameters. See docs for more info.
689 - updated docs and tests for this
692 - added &dump method to easily Data::Dumper
696 - cleaned up the initialization of attributes
697 which do not store things in the instance
698 - added the %:methods attribute definition to
701 ~ lots of misc. test cleanup
703 0.33 Sat. Aug. 19, 2006
705 - moved the metaclass cache out of here
706 and it is now in Class::MOP itself.
709 - moved all the metaclass cache stuff here
710 - fixed all tests for this
712 * Class::MOP::Attribute
713 - reference values (other than CODE refs)
714 are no longer allowed for defaults
715 - added tests for this
717 * Class::MOP::Package
718 - fixed an issue with perl 5.8.1 and how it deals
719 with symbol tables. The namespace hash is now
720 always reloaded from the symbol table.
722 ~ lots of misc. documentation cleanup
724 0.32 Sat. Aug. 12, 2006
725 + added Class::MOP::Object so that the
726 metamodel is more complete (and closer
727 to what Perl 6 will probably be).
729 * Class::MOP::Package
730 - refactored entire class, this is now
731 the primary gateway between the metaclass
732 and the Perl 5 symbol table
733 - added many tests for this
734 - this class is now a subclass of
736 - added some tests to reflect this
739 - refactored all symbol table access to
740 use Class::MOP::Package methods instead
743 - adding the $:version attribute in the bootstrap
744 so that Module has a version as an attribute
745 - see comment in Class::MOP for details
746 - added the $:authority attribute to this module
747 as well as an &identifier method, to bring us
748 ever closer to Perl 6 goodness
749 - I have added $AUTHORITY to all the modules
750 - added tests for this
752 * Class::MOP::Instance
753 - added &deinitialize_slot for removing slots
755 - added tests for this
757 * Class::MOP::Attribute
758 - added support for &deinitialize_slot for removing
759 slots from an instance
760 - added tests for this
762 0.31 Sat. July 15, 2006
765 - added &find_method_by_name to locate a method
766 anywhere within the class hierarchy
768 * Class::MOP::Attribute
769 - added &set_value and &get_value for getting
770 the value of the attribute for a particular
773 0.30 Wed. July 5, 2006
774 ---------------------------------------
775 This is the first version of Class::MOP
776 to introduce the immutable features which
777 will be used for optimizating the MOP.
778 This support should still be considered
779 experimental, but moving towards stability.
780 ---------------------------------------
782 * Created Class::MOP::Class::Immutable
784 * Created the Class::MOP::Package and
785 Class::MOP::Module classes to more
786 closely conform to Perl 6's meta-model
789 - now inherits from Class::MOP::Module
790 - several methods moved to ::Module and
791 ::Package and now inherited
792 - added tests for this
794 * Class::MOP::Instance
795 - added an is_inlinable method to allow other
796 classes to check before they attempt to optimize.
797 - added an inline_create_instance to inline
798 instance creation (of course)
801 - the Class::MOP::Class::*_package_variable
802 methods are all now methods of Class::MOP::Package
803 and called *_package_symbol instead. This is
804 because they are now more general purpose symbol
805 table manipulation methods.
807 0.29_02 Thurs. June 22, 2006
808 ++ DEVELOPER RELEASE ++
810 - small change in &create so that it behaves
811 properly when inherited
812 - small fix to &clone_instance
814 0.29_01 Fri. May 12, 2006
815 ++ DEVELOPER RELEASE ++
816 - This release works in combination with
817 Moose 0.09_01, it is a developer release
818 because it introduces a new instance
819 sub-protocol and has not yet been
823 - anon-classes are now properly garbage collected
824 - added tests for this
825 - improved method modifier wrapping
827 * Class::MOP::Instance
828 - added new instance protocol
829 - added tests for this
830 - changed all relevant modules and examples
832 - Class::MOP::Attribute
836 - you no longer need to specify the metaclass
837 itself, if it is not there, Class::MOP::Class
839 - updated tests for this
842 - added ArrayBasedStorage example to show
843 instance storage using ARRAY refs instead of
845 - added tests for this
846 - InsideOutClass is totally revised using the
847 new instance protocol
848 - added more tests for this
850 0.26 Mon. April 24, 2006
852 - added find_attribute_by_name method
853 - added tests and docs for this
854 - some small optimizations
856 * Class::MOP::Attribute
857 - some small optimizations
859 0.25 Thurs. April 20, 2006
861 - added create_anon_class for creating anonymous classes
862 - added tests for this
863 - added get_all_metaclasses, get_all_metaclass_names
864 and get_all_metaclass_instances method to allow
865 access to all the cached metaclass objects.
866 - attribute slot initialization is now the responsibility
867 of the attribute itself, and construct_instance now
868 delegates appropriately
870 * Class::MOP::Attribute
871 - attribute slot initialization is now the responsibility
872 of the attribute itself, so we added a method for it
873 called initialize_instance_slot
876 - adjusted all the examples to use the new attribute
877 initialize_instance_slot method
879 0.24 Tues. April 11, 2006
881 - cleaned up how the before/after/around method
882 modifiers get named with Sub::Name
884 0.23 Thurs. March 30, 2006
886 - fixed the way attribute defaults are handled
887 during instance construction (bug found by chansen)
889 * Class::MOP::Attribute
890 - read-only accessors ('reader') will now die if
891 passed more than one argument (attempting to write
893 - added tests for this
894 - adjusted all /example files to comply
896 0.22 Mon. March 20, 2006
898 - localized $@ in the *_package_variable functions
899 because otherwise, it does ugly things in Moose.
900 - added test case for this
902 0.21 Wed. March 15, 2006
904 - fixed issue where metaclasses are reaped from
905 our cache in global destruction, and so are not
906 available in DESTORY calls
908 0.20 Thurs. March 2, 2006
909 - removed the dependency for Clone since
910 we no longer to deep-cloning by default.
913 - added &package_name, &name and
914 &fully_qualified_name methods, some of
915 which were formerly private subs in
918 * Class::MOP::Method::Wrapped
919 - allows for a method to be wrapped with
920 before, after and around modifiers
921 - added tests and docs for this feature
924 - improved &get_package_symbol
925 - &version and &superclasses now use it
926 - methods are now blessed into Class::MOP::Method
928 - added methods to install CLOS-style method modifiers
929 - &add_before_method_modifier
930 - &add_after_method_modifier
931 - &add_around_method_modifier
932 - added tests and docs for these
933 - added &find_next_method_by_name which finds the
934 equivalent of SUPER::method_name
936 0.12 Thurs. Feb 23, 2006
937 - reduced the dependency on B, no need to always
941 - added docs to the C3 method dispatch order test
942 - fixed missing Algorithm::C3 dependency by making
943 the test skip if it is not installed
945 0.11 Mon Feb. 20, 2006
947 - added example of changing method dispatch order to C3
950 - changed how clone_instance behaves, it now only does a
951 shallow clone (see docs for more details)
952 - added docs and tests
954 0.10 Tues Feb. 14, 2006
955 ** This release was mostly about writing more tests and
956 cleaning out old and dusty code, the MOP should now
957 be considered "ready to use".
959 - adding more tests to get coverage up a little higher,
960 mostly testing errors and edge cases.
961 - test coverage is now at 99%
964 - no longer optionally exports to UNIVERSAL::meta or
965 creates a custom metaclass generator, use the
966 metaclass pragma instead.
969 - fixed a number of minor issues which came up in the
970 error/edge-case tests
972 * Class::MOP::Attribute
973 - fixed a number of minor issues which came up in the
974 error/edge-case tests
977 - fixing the AttributesWithHistory example, it was broken.
979 0.06 Thurs Feb. 9, 2006
981 - adding new metaclass pragma to make setting up the
982 metaclass a little more straightforward
985 - clean up bootstrapping to include more complete
986 attribute definitions for Class::MOP::Class and
987 Class::MOP::Attribute (accessors, readers, writers,
988 etc.) ... it is redundant, but is useful meta-info
992 - fixing minor meta-circularity issue with &meta, it
993 is now more useful for subclasses
994 - added &get_attribute_map as an accessor for the
995 hash of attribute meta objects
996 - &compute_all_applicable_attributes now just returns
997 the attribute meta-object, rather than the HASH ref
998 since all the same info can be gotten from the
999 attribute meta-object itself
1000 - updated docs & tests to reflect
1001 - added &clone_instance method which does a deep clone
1002 of the instance structure created by &construct_instance
1003 - added docs & tests for this
1004 - added Clone as a dependency
1005 - added &new_object and &clone_object convience methods to
1006 return blessed new or cloned instances
1007 - they handle Class::MOP::Class singletons correctly too
1008 - added docs & tests for this
1009 - cleaned up the &constuct_class_instance so that it behaves
1010 more like &construct_instance (and managed the singletons too)
1011 - added the &check_metaclass_compatibility method to make sure
1012 that metaclasses are upward and downward compatible.
1013 - added tests and docs for this
1016 - adjusting code to use the &Class::MOP::Class::meta
1018 - adjusting code to use the metaclass pragma
1020 0.05 Sat Feb. 4, 2006
1022 - added the &attribute_metaclass and &method_metaclass
1023 attributes which contain a metaclass name to use for
1024 attributes/methods respectively
1027 - bootstrap additional attributes for Class::MOP::Class
1030 - adjusted the example code and tests to use the new
1031 &attribute_metaclass feature of Class::MOP::Class
1032 - added new example:
1035 0.04 Fri Feb. 3, 2006
1037 - some documentation suggestions from #perl6
1039 * Class::MOP::Attribute
1040 - improved error messages
1043 - added new examples:
1044 - AttributesWithHistory
1045 - ClassEncapsultedAttributes
1047 0.03 Fri Feb. 3, 2006
1048 - converted to Module::Build instead of EU::MM
1050 * Class::MOP::Attribute
1051 - refactored method generation code
1052 - attributes are now associated with class directly
1055 - refactored the InsideOut example to take advantage
1056 of the Class::MOP::Attribute refactoring
1057 - changed example files to .pod files and hide thier
1058 package names from PAUSE (I don't want to own these
1059 namespaces really, they are just examples)
1061 0.02 Thurs Feb. 2, 2006
1062 - moving examples from t/lib/* to examples/*
1063 - adding POD documentation to the examples
1065 0.01 Thurs Feb. 2, 2006