1 Revision history for Perl extension Class-MOP.
3 0.65 Mon September 1, 2008
4 For those not following the series of dev releases, the changes
5 from 0.64 from 0.65 can mostly be summed up as a lot performance
6 improvements by nothingmuch, including new optional XS versions of
7 some methods. Also, Class::MOP now works _without_ any XS modules,
8 for sad systems without a compiler.
11 - Added name and package_name XS accessors, and make sure all
12 the XS and Perl versions work the same way. (Dave Rolsky)
15 - The XS versions of various methods just returned undef when
16 called class methods, rather than dying like the pure Perl
17 versions. (Dave Rolsky)
19 0.64_07 Fri August 29, 2008
21 - Silenced warnings that managed to break Moose tests when XS
22 was loaded. (Dave Rolsky)
23 - Some XS versions of methods were ignored because of typos in
26 0.64_06 Mon August 25, 2008
28 - Another MS VC++ fix, cannot declare a variable in the middle
29 of a scope (Taro Nishino).
31 0.64_05 Sun August 24, 2008
33 - None of the dev releases actually loaded the XS properly, but
34 we silently fell back to the pure Perl version of the
38 - Replaced some code that used functions not available on Visual
39 C++ with some Perl XS API bits (Dave Rolsky).
41 0.64_04 Sat August 23, 2008
43 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
45 * pod.t and pod_coveraget.t
46 - These are no longer shipped with the tarball because of bogus
47 failures from CPAN testers. (Dave Rolsky)
49 0.64_03 Thu August 21, 2008
51 - Some (legit) code was misparsed by earlier 5.8.x
52 releases. (nothingmuch)
55 - Fix a constant in void context warning (nothingmuch)
57 0.64_02 Thu August 21, 2008
58 * Makefile.PL and Class::MOP
59 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
62 - Add missing prereqs that got lost in the switch away from
65 * Class::MOP::Instance
66 - New method - get_all_attributes (nothingmuch)
68 0.64_01 Wed August 20, 2008
70 - We now check to see if you have a compiler. If you don't, the
71 module installs without some XS bits, but will work the same
72 as with XS. This should make it easier to install on platforms
73 without a compiler (like Windows). (Dave Rolsky)
76 - Perl 6 style attribute naming replaced with sane style ('methods', not
77 '%!methods'). These changes should not impact any existing API uses.
81 - Quite a number of optimizations based on profiling, including
82 allowing constructors to take hash references instead of
83 hashes, duplicating some frequently used code in XS, and
84 making constructors immutable. These changes should not impact
85 any existing API uses. (nothingmuch)
88 - Constructors now respect the meta attributes of their subclasses,
89 facilitating MOP extensibility. More related changes will happen in the
90 next several releases. (nothingmuch)
93 - New method - get_all_methods, replaces the deprecated
94 compute_all_applicable_methods. get_all_attributes provided for
95 consistency (nothingmuch)
96 - New method - wrap_method was refactored out of get_method_map
98 - New API for meta instance invalidation - invalidate_meta_instance,
99 invalidate_meta_instances, add_dependent_meta_instance,
100 remove_dependent_meta_instance, called automatically when attribute
101 definitions change and allows notification of dependent subclasses.
104 0.64 Sun August 3, 2008
105 * Class::MOP::Immutable
106 - fixing subtle edge case in immutable when you
108 - clean up option processing (nothingmuch)
110 * Class::MOP::Instance
111 - inlined initialize slot didn't match
112 non-inlined (nothingmuch)
114 0.63 Mon July 7, 2008
116 - load_class will initialize a metaclass even if
117 the class is already loaded (sartak)
118 - load_class now returns the metaclass instance
119 instead of just 1 (sartak)
122 - better error messages (sartak and Dave Rolsky)
124 0.62 Wed June 18, 2008
125 - in is_class_loaded, recognize scalar references (as opposed to globs) in
126 the symbol table as methods (these are optimized constant subs)
128 0.61 Fri. June 13, 2008
129 - Okay, lets give this another try and see if PAUSE
130 recognizes it correct this time.
132 0.60 Thurs. Jun 12, 2008
133 - Fixed a version number issue by bumping all modules
136 0.59 Thurs. Jun 12, 2008
137 !! Several fixes resulting in yet another 25-30% speedup !!
140 - now stores the instance of the instance
141 metaclass to avoid needless recomputation
142 and deletes it when the cache is blown
143 - introduce methods to query Class::MOP::Class for
144 the options used to make it immutable as well as
145 the proper immutable transformer. (groditi)
147 * Class::MOP::Package
148 - {add, has, get, remove}_package_symbol all
149 now accept a HASH ref argument as well as the
150 string. All internal usages now use the HASH
154 - MOP.xs does sanity checks on the coderef
156 - is_class_loaded check now uses code that
157 was improved in Moose's ClassName type
159 - nonsensical (undef, empty, reference) class
160 names now throw a more direct error in
162 - tests for this and other aspects of
168 Class::MOP::Method::Wrapped
169 Class::MOP::Attribute
170 - switched usage of reftype to ref because
173 0.58 Thurs. May 29, 2008
174 (late night release engineering)--
176 - fixing the version is META.yml, no functional
177 changes in this release
179 0.57 Wed. May 28, 2008
180 !! Several speedups resulting in 20-25% speedups !!
181 || (thanks to konobi, groditi, mst & CataMoose) !!
184 - made get_method_map use list_all_package_symbols
185 instead of manually grabbing each symbol
186 - streamlining &initialize somewhat, since it gets
189 * Class::MOP::Package
190 - made {get, has}_package_symbol not call
192 - inlining a few calls to &name with
193 direct HASH access key access
194 - added get_all_package_symbols to fetch
195 a HASH of items based on a type filter
196 similar to list_all_package_symbols
197 - added tests for this
200 Class::MOP::Method::Constructor
201 Class::MOP::Method::Generated
202 Class::MOP::Method::Accessor
203 - added more descriptive error message to help
204 keep people from wasting time tracking an error
205 that is easily fixed by upgrading.
207 * Class::MOP::Immutable
208 - Don't inline a destructor unless the user actually
210 - added tests for this
212 0.56 Saturday, May 24, 2008
214 - we now get the &check_package_cache_flag
215 function from MRO::Compat
216 - All XS based functionality now has a
217 Pure Perl alternative
218 - the CLASS_MOP_NO_XS environment variable
219 can now be used to force non-XS versions
222 * Class::MOP::Attribute
223 - add has_read_method and has_write_method
224 - get_{read,write}_method_ref now wraps the
225 anon-sub ref in the method metaclass when
227 - added tests for this
229 * Class::MOP::Immutable
230 - added the ability to "wrap" methods when
231 making the class immutable
234 - now handling the edge case of ->meta->identifier
235 dying by wrapping add_package_symbol to specifically
236 allow for it to work.
237 - added tests for this
239 * Class::MOP::Attribute
241 Class::MOP::Immutable
242 - any time a method meta object is constructed
243 we make sure to pass the correct package and
244 method name information
247 Class::MOP::Method::Wrapped
248 Class::MOP::Method::Generated
249 Class::MOP::Method::Accessor
250 Class::MOP::Method::Consructor
251 - the &wrap constructor method now requires that a
252 'package_name' and 'name' attribute are passed. This
253 is to help support the no-XS version, and will
254 throw an error if these are not supplied.
255 - all these classes are now bootstrapped properly
256 and now store the package_name and name attributes
259 ~ Build.PL has been removed since the
260 Module::Install support has been removed
262 0.55 Mon. April 28, 2008
263 - All classes now have proper C3 MRO support
264 - added MRO::Compat as a dependency to allow
265 for the C3 MRO support to Just Work in all
269 - rebless_instance now returns the instance
270 it has just blessed, this is mostly to
272 - set the attr correctly in rebless_instance
273 when it has no init_arg
274 - tweaked &linear_isa and &class_precedence_list
275 to support c3 classes.
277 0.54 Fri. March, 14, 2008
280 - making sure that load_class never gets
281 passed a value from @_ or $_ to squash
282 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
285 - make_{immutable,mutable} now return 1
287 - improved error handling in ->create method
288 - rebless_instance now takes extra params which
289 will be used to populate values
290 - added tests for this
293 - localizing the Data::Dumper configurations so
294 that it does not pollute others (RT #33509)
300 Class::MOP::Attribute
301 - these classes no longer define their own ->meta,
302 but instead just inherit from Class::MOP::Object
304 * Class::MOP::Instance
305 Class::MOP::Immutable
306 - these classes now inherit from Class::MOP::Object
309 - fixed the filename length on several
310 test files so we install on VMS better
312 - fixed incorrect use of catdir when it
313 should be catfile (RT #32385)
315 0.53 Thurs. Feb. 14, 1008
316 ~~ several doc. fixes and updates ~~
319 Class::MOP::Method::Constructor
320 Class::MOP::Attribute
321 - making init_arg accept an undefined value
322 to indicate that no constructor args can
323 be passed (thanks to nothingmuch)
324 - added tests for this
325 - added attribute initializer attribute (rjbs)
328 - making this use the new init_arg => undef
329 feature instead of the silly hack from
330 before (thanks to nothingmuch)
332 0.52 Tues. Jan. 22, 2008
334 - fixed bug in rebless_instance
337 * Class::MOP::Method::Constructor
338 - removed assumptions about the existence of
341 0.51 Mon. Jan. 14, 2008
342 ~~~ some misc. doc. fixes ~~~
343 ~~ updated copyright dates ~~
346 - now sets the IS_RUNNING_ON_5_10
347 constant so that we can take advantage
348 of some of the nice bits of 5.10
351 - uses the IS_RUNNING_ON_5_10 flag to
352 optimize the &linearized_isa method
353 and avoid the hack/check for circular
354 inheritence in &class_precedence_list
355 - added rebless_instance method (Sartak)
356 - added tests for this
358 * Class::MOP::Immutable
359 - the immutable class now keeps track of
360 the transformer which immutablized it
362 * Class::MOP::Instance
363 - added rebless_instance_structure method (Sartak)
364 - added tests for this
366 0.50 Fri. Dec. 21, 2007
368 - fixed bug in immutable to make sure that
369 transformation arguments are saved
371 - added tests for this
373 * Class::MOP::Immutable
374 - fixed a bug (see above)
376 * Class::MOP::Attribute
379 0.49 Fri. Dec. 14, 2007
380 !! Class::MOP now loads 2 x faster !!
381 !! with XS speedups (thanks konobi) !!
384 - removed the dependency on B
385 - added two XS functions (thanks konobi)
386 - get_code_info($code) which replaces all
387 the B fiddling we were doing with
388 faster/leaner XS level fiddling
389 - check_package_cache_flag($pkg_name) which
390 returns the PL_sub_generation variable to
391 be used to help manage method caching.
394 In 5.10 or greater this will actually
395 use the mro::get_pkg_gen instead to give
396 even more accurate caching information.
397 blblack++ for that stuff :)
400 - added the &subclasses method (thanks rlb)
401 - added the update_package_cache_flag and
402 reset_package_cache_flag which help keep
403 track of when we need to re-fetch the
405 - Several small improvements to take advantage
406 of the new method map caching features
408 0.48 Mon. Nov. 26, 2007
409 * Class::MOP::Attribute
410 - fixed get_read/write_method to handle the
411 HASH ref case, which makes the
412 get_read/write_method_ref handle it too.
413 - added more tests for this
415 0.47 Sat. Nov. 24, 2007
416 * Class::MOP::Attribute
417 - fixed misspelling in get_write_method_ref
418 - added more tests for this
420 0.46 Fri. Nov. 23, 2007
422 - added the linearized_isa method instead of constantly
423 pruning duplicate classes (this will be even more
424 useful in the 5.10-compat version coming soon)
426 * Class::MOP::Attribute
427 - added the get_read_method_ref and get_write_method_ref
428 methods which allow you to retrieve a CODE ref which
429 can always be used to read or write an attribute.
431 0.45 Thurs. Nov. 13, 2007
432 * Class::MOP::Attribute
433 - Fix error message on confess (groditi)
435 0.44 Thurs. Nov. 13, 2007
436 - Apparently I didn't make dist correctly (groditi)
438 0.43 Thurs. Nov. 13, 2007
440 - Add support for the 'builder' attribute (groditi)
443 - optimise metaclass-already-exists check in
444 construct_class_instance (groditi)
445 - duplicate check into initialize to save a
446 call through (groditi)
448 * Class::MOP::Attribute
449 - Add support for the 'builder' attribute (groditi)
450 - Make predicates check for the existence of a value, not whether
451 it is defined (groditi)
453 * Class::MOP::Instance
454 - Make predicates check for the existence of a value, not whether
455 it is defined (groditi)
457 * Class::MOP::Method::Accessor
458 - made this a subclass of Class::MOP::Method::Generated
459 - removed the relevant attributes
461 * Class::MOP::Method::Constructor
462 - fixed the cached values we had to be more sane
463 - made this a subclass of Class::MOP::Method::Generated
464 - fixed generated constructor so it properly handles
466 - added tests for this
467 - added the option to allow for both inlined and
468 non-inlined constructors.
469 - Update inlined methods for builder and predicate changes (groditi)
471 * Class::MOP::Method::Generated
472 - added this class as an abstract base for the
473 Class::MOP::Method::{Constructor,Accessor} classes
474 - added tests for this
477 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
478 - Tests for new predicate behavior (and corrections to old tests) (groditi)
481 - Update ArrayRef based class example to work with predicate changes
483 0.42 Mon. July 16, 2007
484 !!! Horray for mst, he fixed it !!!
486 * Class::MOP::Package
487 - alter symbol table handling to deal with 5.8.x and 5.9.x
490 - Get rid of the crappy workaround from 0.40/41
492 0.41 Sun. July 15, 2007
494 Arghh!!! My TODO test didn't work, so I handle
495 it manually now so that people can use this
496 with 5.9.5/bleadperl without issue.
498 0.40 Tues, July 3, 2007
500 ~ marked a test in 003_methods.t as TODO
501 for perl 5.9.5 (this test is irrelvant to
502 the module functioning on 5.9.5 for the most
505 0.39 Mon. June 18, 2007
506 * Class::MOP::Immutable
507 - added make_metaclass_mutable + docs (groditi)
508 - removed unused variable
509 - added create_immutable_transformer
510 necessary for sane overloading of immutable behavior
511 - tests for this (groditi)
514 - Immutability can now be undone,
515 added make_mutable + tests + docs (groditi)
516 - Massive changes to the way Immutable is done
517 for details see comments next to make_immutable
518 This fixes a bug where custom metaclasses broke
519 when made immutable. We are now keeping one immutable
520 metaclass instance per metaclass instead of just one
521 to prevent isa hierarchy corruption. Memory use will go
522 up, but I suspect it will be neglible.
523 - New tests added for this behavior. (groditi)
525 0.38 Thurs. May 31, 2007
526 ~~ More documentation updates ~~
528 * Class::MOP::Package
529 - we now deal with stub methods properly
530 - added tests for this
531 - fixed some tests failing on 5.9.5 (thanks blblack)
533 * Class::MOP::Attribute
534 - added get_read_method and get_write_method
535 thanks to groditi for this code, tests
537 - added tests and POD for this
540 - fixed RT issue #27329, clone object now
541 handles undef values correctly.
542 - added tests for this
543 - Corrected anon-class handling so that they
544 will not get reaped when instances still
545 exist which need to reference them. This is
546 the correct behavior, hopefully this is an
547 obscure enough feature that there are not too
548 many work arounds out in the wild.
549 - added tests for this by groditi
550 - updated docs to explain this
553 - load custom metaclasses automatically (thanks groditi)
554 - added tests for this behavior
556 0.37 Sat. March 10, 2007
557 ~~ Many, many documentation updates ~~
560 - added &load_class and &is_class_loaded
561 - added tests and docs for these
563 * Class::MOP::Attribute
564 - default now checks the instance with defined to
565 avoid setting off bool-overloads (found by Carl Franks)
569 - bad name in a test, causing meaningless failuress.
575 - All attribute names are now consistent and follow Perl 6
576 style (prefixed with the sigil, and ! as the twigil for
577 private attrs). This should not affect any code, unless
578 you broke encapsulation, in which case, it is your problem
581 !! Class::MOP::Class::Immutable has been removed
583 * Class::MOP::Method::Constructor
584 - this has been moved out of Class::MOP::Class::Immutable
585 and is a proper subclass of Class::MOP::Method now.
588 - this module now uses Class::MOP::Immutable for the
589 immutable transformation instead of
590 Class::MOP::Class::Immutable.
592 + Class::MOP::Immutable
593 - this module now controls the transformation from a mutable
594 to an immutable version of the class. Docs for this will
595 be coming eventually.
598 0.36 Sun. Nov. 5, 2006
600 - added a few 'no warnings' lines to keep annoying
601 (and meaningless) warnings from chirping during
605 - some more bootstrapping is now done on the new
608 * Class::MOP::Class::Immutable
610 - constructor generation is now handled by
611 the Class::MOP::Method::Constructor class
613 * Class::MOP::Method::Constructor
614 - created this to handle constructor generation
615 in Class::MOP::Class::Immutable
617 * Class::MOP::Attribute
619 - attributes now delegate to the
620 Class::MOP::Method::Accessor to generate
623 * Class::MOP::Method::Accessor
624 - all accessor generation functions from
625 Class::MOP::Attribute have been moved here
627 0.35 Sat. Sept. 30, 2006
629 * scripts/class_browser.pl
630 - initial prototype of a class browser, more
631 on this to come. Comments and patches are
635 - All Class::MOP::* accessors are no longer
636 re-generated in the bootstrap, instead
637 they are aliased from the originals
638 - fixed tests to reflect
639 - added Class::MOP::Method (and its subclasses)
641 - adjusted tests for this
642 - added the Class::MOP::Instance attributes
647 - methods are no longer blessed CODE refs
648 but are actual objects which can be CODE-ified
649 - adjusted tests to compensate
650 - adjusted docs for this
653 - changed how methods are dealt with to
654 encapsulate most of the work into the
655 &get_method_map method
656 - made several adjustments for the change
657 in Class::MOP::Method
658 - &add_attribute now checks if you are adding
659 a duplicate name, and properly removes the
660 old one before installing the new one
661 - added tests for this
662 - adjusted docs for this
664 * Class::MOP::Class::Immutable
665 - added caching of &get_method_map
666 - fixed issue with &get_package_symbol
667 - cleaned up the methods that die (patch by David Wheeler)
669 * Class::MOP::Package
670 - added filtering capabilities to
671 &list_all_package_symbols
673 0.34 Sat. Aug. 26, 2006
675 - added the %:methods attribute, which like
676 the $:version and such just actually goes
677 to the symbol table to get it's stuff.
678 However, it makes the MOP more complete.
680 - The &create method now requires that all
681 but the package name now is passed in as
682 named parameters. See docs for more info.
683 - updated docs and tests for this
686 - added &dump method to easily Data::Dumper
690 - cleaned up the initialization of attributes
691 which do not store things in the instance
692 - added the %:methods attribute definition to
695 ~ lots of misc. test cleanup
697 0.33 Sat. Aug. 19, 2006
699 - moved the metaclass cache out of here
700 and it is now in Class::MOP itself.
703 - moved all the metaclass cache stuff here
704 - fixed all tests for this
706 * Class::MOP::Attribute
707 - reference values (other than CODE refs)
708 are no longer allowed for defaults
709 - added tests for this
711 * Class::MOP::Package
712 - fixed an issue with perl 5.8.1 and how it deals
713 with symbol tables. The namespace hash is now
714 always reloaded from the symbol table.
716 ~ lots of misc. documentation cleanup
718 0.32 Sat. Aug. 12, 2006
719 + added Class::MOP::Object so that the
720 metamodel is more complete (and closer
721 to what Perl 6 will probably be).
723 * Class::MOP::Package
724 - refactored entire class, this is now
725 the primary gateway between the metaclass
726 and the Perl 5 symbol table
727 - added many tests for this
728 - this class is now a subclass of
730 - added some tests to reflect this
733 - refactored all symbol table access to
734 use Class::MOP::Package methods instead
737 - adding the $:version attribute in the bootstrap
738 so that Module has a version as an attribute
739 - see comment in Class::MOP for details
740 - added the $:authority attribute to this module
741 as well as an &identifier method, to bring us
742 ever closer to Perl 6 goodness
743 - I have added $AUTHORITY to all the modules
744 - added tests for this
746 * Class::MOP::Instance
747 - added &deinitialize_slot for removing slots
749 - added tests for this
751 * Class::MOP::Attribute
752 - added support for &deinitialize_slot for removing
753 slots from an instance
754 - added tests for this
756 0.31 Sat. July 15, 2006
759 - added &find_method_by_name to locate a method
760 anywhere within the class hierarchy
762 * Class::MOP::Attribute
763 - added &set_value and &get_value for getting
764 the value of the attribute for a particular
767 0.30 Wed. July 5, 2006
768 ---------------------------------------
769 This is the first version of Class::MOP
770 to introduce the immutable features which
771 will be used for optimizating the MOP.
772 This support should still be considered
773 experimental, but moving towards stability.
774 ---------------------------------------
776 * Created Class::MOP::Class::Immutable
778 * Created the Class::MOP::Package and
779 Class::MOP::Module classes to more
780 closely conform to Perl 6's meta-model
783 - now inherits from Class::MOP::Module
784 - several methods moved to ::Module and
785 ::Package and now inherited
786 - added tests for this
788 * Class::MOP::Instance
789 - added an is_inlinable method to allow other
790 classes to check before they attempt to optimize.
791 - added an inline_create_instance to inline
792 instance creation (of course)
795 - the Class::MOP::Class::*_package_variable
796 methods are all now methods of Class::MOP::Package
797 and called *_package_symbol instead. This is
798 because they are now more general purpose symbol
799 table manipulation methods.
801 0.29_02 Thurs. June 22, 2006
802 ++ DEVELOPER RELEASE ++
804 - small change in &create so that it behaves
805 properly when inherited
806 - small fix to &clone_instance
808 0.29_01 Fri. May 12, 2006
809 ++ DEVELOPER RELEASE ++
810 - This release works in combination with
811 Moose 0.09_01, it is a developer release
812 because it introduces a new instance
813 sub-protocol and has not yet been
817 - anon-classes are now properly garbage collected
818 - added tests for this
819 - improved method modifier wrapping
821 * Class::MOP::Instance
822 - added new instance protocol
823 - added tests for this
824 - changed all relevant modules and examples
826 - Class::MOP::Attribute
830 - you no longer need to specify the metaclass
831 itself, if it is not there, Class::MOP::Class
833 - updated tests for this
836 - added ArrayBasedStorage example to show
837 instance storage using ARRAY refs instead of
839 - added tests for this
840 - InsideOutClass is totally revised using the
841 new instance protocol
842 - added more tests for this
844 0.26 Mon. April 24, 2006
846 - added find_attribute_by_name method
847 - added tests and docs for this
848 - some small optimizations
850 * Class::MOP::Attribute
851 - some small optimizations
853 0.25 Thurs. April 20, 2006
855 - added create_anon_class for creating anonymous classes
856 - added tests for this
857 - added get_all_metaclasses, get_all_metaclass_names
858 and get_all_metaclass_instances method to allow
859 access to all the cached metaclass objects.
860 - attribute slot initialization is now the responsibility
861 of the attribute itself, and construct_instance now
862 delegates appropriately
864 * Class::MOP::Attribute
865 - attribute slot initialization is now the responsibility
866 of the attribute itself, so we added a method for it
867 called initialize_instance_slot
870 - adjusted all the examples to use the new attribute
871 initialize_instance_slot method
873 0.24 Tues. April 11, 2006
875 - cleaned up how the before/after/around method
876 modifiers get named with Sub::Name
878 0.23 Thurs. March 30, 2006
880 - fixed the way attribute defaults are handled
881 during instance construction (bug found by chansen)
883 * Class::MOP::Attribute
884 - read-only accessors ('reader') will now die if
885 passed more than one argument (attempting to write
887 - added tests for this
888 - adjusted all /example files to comply
890 0.22 Mon. March 20, 2006
892 - localized $@ in the *_package_variable functions
893 because otherwise, it does ugly things in Moose.
894 - added test case for this
896 0.21 Wed. March 15, 2006
898 - fixed issue where metaclasses are reaped from
899 our cache in global destruction, and so are not
900 available in DESTORY calls
902 0.20 Thurs. March 2, 2006
903 - removed the dependency for Clone since
904 we no longer to deep-cloning by default.
907 - added &package_name, &name and
908 &fully_qualified_name methods, some of
909 which were formerly private subs in
912 * Class::MOP::Method::Wrapped
913 - allows for a method to be wrapped with
914 before, after and around modifiers
915 - added tests and docs for this feature
918 - improved &get_package_symbol
919 - &version and &superclasses now use it
920 - methods are now blessed into Class::MOP::Method
922 - added methods to install CLOS-style method modifiers
923 - &add_before_method_modifier
924 - &add_after_method_modifier
925 - &add_around_method_modifier
926 - added tests and docs for these
927 - added &find_next_method_by_name which finds the
928 equivalent of SUPER::method_name
930 0.12 Thurs. Feb 23, 2006
931 - reduced the dependency on B, no need to always
935 - added docs to the C3 method dispatch order test
936 - fixed missing Algorithm::C3 dependency by making
937 the test skip if it is not installed
939 0.11 Mon Feb. 20, 2006
941 - added example of changing method dispatch order to C3
944 - changed how clone_instance behaves, it now only does a
945 shallow clone (see docs for more details)
946 - added docs and tests
948 0.10 Tues Feb. 14, 2006
949 ** This release was mostly about writing more tests and
950 cleaning out old and dusty code, the MOP should now
951 be considered "ready to use".
953 - adding more tests to get coverage up a little higher,
954 mostly testing errors and edge cases.
955 - test coverage is now at 99%
958 - no longer optionally exports to UNIVERSAL::meta or
959 creates a custom metaclass generator, use the
960 metaclass pragma instead.
963 - fixed a number of minor issues which came up in the
964 error/edge-case tests
966 * Class::MOP::Attribute
967 - fixed a number of minor issues which came up in the
968 error/edge-case tests
971 - fixing the AttributesWithHistory example, it was broken.
973 0.06 Thurs Feb. 9, 2006
975 - adding new metaclass pragma to make setting up the
976 metaclass a little more straightforward
979 - clean up bootstrapping to include more complete
980 attribute definitions for Class::MOP::Class and
981 Class::MOP::Attribute (accessors, readers, writers,
982 etc.) ... it is redundant, but is useful meta-info
986 - fixing minor meta-circularity issue with &meta, it
987 is now more useful for subclasses
988 - added &get_attribute_map as an accessor for the
989 hash of attribute meta objects
990 - &compute_all_applicable_attributes now just returns
991 the attribute meta-object, rather than the HASH ref
992 since all the same info can be gotten from the
993 attribute meta-object itself
994 - updated docs & tests to reflect
995 - added &clone_instance method which does a deep clone
996 of the instance structure created by &construct_instance
997 - added docs & tests for this
998 - added Clone as a dependency
999 - added &new_object and &clone_object convience methods to
1000 return blessed new or cloned instances
1001 - they handle Class::MOP::Class singletons correctly too
1002 - added docs & tests for this
1003 - cleaned up the &constuct_class_instance so that it behaves
1004 more like &construct_instance (and managed the singletons too)
1005 - added the &check_metaclass_compatibility method to make sure
1006 that metaclasses are upward and downward compatible.
1007 - added tests and docs for this
1010 - adjusting code to use the &Class::MOP::Class::meta
1012 - adjusting code to use the metaclass pragma
1014 0.05 Sat Feb. 4, 2006
1016 - added the &attribute_metaclass and &method_metaclass
1017 attributes which contain a metaclass name to use for
1018 attributes/methods respectively
1021 - bootstrap additional attributes for Class::MOP::Class
1024 - adjusted the example code and tests to use the new
1025 &attribute_metaclass feature of Class::MOP::Class
1026 - added new example:
1029 0.04 Fri Feb. 3, 2006
1031 - some documentation suggestions from #perl6
1033 * Class::MOP::Attribute
1034 - improved error messages
1037 - added new examples:
1038 - AttributesWithHistory
1039 - ClassEncapsultedAttributes
1041 0.03 Fri Feb. 3, 2006
1042 - converted to Module::Build instead of EU::MM
1044 * Class::MOP::Attribute
1045 - refactored method generation code
1046 - attributes are now associated with class directly
1049 - refactored the InsideOut example to take advantage
1050 of the Class::MOP::Attribute refactoring
1051 - changed example files to .pod files and hide thier
1052 package names from PAUSE (I don't want to own these
1053 namespaces really, they are just examples)
1055 0.02 Thurs Feb. 2, 2006
1056 - moving examples from t/lib/* to examples/*
1057 - adding POD documentation to the examples
1059 0.01 Thurs Feb. 2, 2006