1 Revision history for Perl extension Class-MOP.
5 - Add an "execute" method to invoke the body so
6 we can avoid using the coderef overload (Sartak)
7 * Class::MOP::Immutable
8 - When we memoize methods, get their results lazily
9 to remove some compile-time cost (Sartak)
10 - Small speedup from eliminating several method
13 0.71 Wed November 26, 2008
16 - Actual package creation has moved upward from
17 Class to Module so that Moose roles can share
20 0.70_01 Mon, November 19, 2008
22 - Fixes for failures with blead (Florian Ragwitz)
23 - Silenced compiler warnings (Florian Ragwitz)
25 0.70 Fri, November 14, 2008
27 - Fixed an odd corner case where the XS version of
28 get_all_package_symbols could cause a segfault. This only
29 happened with inlined constants in Perl 5.10.0 (Florian
32 0.69 Fri, November 7, 2008
33 * Class::MOP::Method::Wrapped
34 - Added introspection methods for method modifiers (Dave Rolsky)
37 0.68 Fri October 24, 2008
39 - Make load_class require by file name instead of module name.
40 This stops confusing error messages when loading '__PACKAGE__'.
42 - Add load_one_class_of function to enable you to load one of a
43 list of classes, rather than having to call load_class multiple
44 times in an eval. (t0m)
46 0.67 Tue October 14, 2008
48 - Call a method on the class after setting the superclass list
49 so that we can get Perl to detect cycles before MRO::Compat
50 spirals into an infinite loop (sartak)
51 - Reported by Schwern, [rt.cpan.org #39001]
52 - In create(), pass unused options on to initialize()
55 0.66 Sat September 20, 2008
56 !! This release has an incompatible change regarding !!
57 introspection of a class's method with Class::MOP::Class !!
60 - We (us maintainers) now run all tests with XS and then without
61 XS, which should help us catch skew between the XS/pure Perl
65 ! The alias_method method has been deprecated. It now simply
66 calls add_method instead. There is no distinction between
67 aliased methods and "real" methods.
69 This means that methods added via alias_method now show up as
70 part of the class's method list/map. This is a backwards
71 incompatible change, but seems unlikely to break any
72 code. Famous last words. (Dave Rolsky)
75 - Fixed the spelling of "compatibility", but we still have a
76 "check_metaclass_compatability" method for backwards
79 0.65 Mon September 1, 2008
80 For those not following the series of dev releases, the changes
81 from 0.64 from 0.65 can mostly be summed up as a lot performance
82 improvements by nothingmuch, including new optional XS versions of
83 some methods. Also, Class::MOP now works _without_ any XS modules,
84 for sad systems without a compiler.
87 - Added name and package_name XS accessors, and make sure all
88 the XS and Perl versions work the same way. (Dave Rolsky)
91 - The XS versions of various methods just returned undef when
92 called class methods, rather than dying like the pure Perl
93 versions. (Dave Rolsky)
95 0.64_07 Fri August 29, 2008
97 - Silenced warnings that managed to break Moose tests when XS
98 was loaded. (Dave Rolsky)
99 - Some XS versions of methods were ignored because of typos in
100 MOP.xs. (Dave Rolsky)
102 0.64_06 Mon August 25, 2008
103 * Class::MOP (MOP.xs)
104 - Another MS VC++ fix, cannot declare a variable in the middle
105 of a scope (Taro Nishino).
107 0.64_05 Sun August 24, 2008
109 - None of the dev releases actually loaded the XS properly, but
110 we silently fell back to the pure Perl version of the
113 * Class::MOP (MOP.xs)
114 - Replaced some code that used functions not available on Visual
115 C++ with some Perl XS API bits (Dave Rolsky).
117 0.64_04 Sat August 23, 2008
119 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
121 * pod.t and pod_coveraget.t
122 - These are no longer shipped with the tarball because of bogus
123 failures from CPAN testers. (Dave Rolsky)
125 0.64_03 Thu August 21, 2008
126 * Class::MOP::Package
127 - Some (legit) code was misparsed by earlier 5.8.x
128 releases. (nothingmuch)
131 - Fix a constant in void context warning (nothingmuch)
133 0.64_02 Thu August 21, 2008
134 * Makefile.PL and Class::MOP
135 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
138 - Add missing prereqs that got lost in the switch away from
141 * Class::MOP::Instance
142 - New method - get_all_attributes (nothingmuch)
144 0.64_01 Wed August 20, 2008
146 - We now check to see if you have a compiler. If you don't, the
147 module installs without some XS bits, but will work the same
148 as with XS. This should make it easier to install on platforms
149 without a compiler (like Windows). (Dave Rolsky)
152 - Perl 6 style attribute naming replaced with sane style ('methods', not
153 '%!methods'). These changes should not impact any existing API uses.
157 - Quite a number of optimizations based on profiling, including
158 allowing constructors to take hash references instead of
159 hashes, duplicating some frequently used code in XS, and
160 making constructors immutable. These changes should not impact
161 any existing API uses. (nothingmuch)
164 - Constructors now respect the meta attributes of their subclasses,
165 facilitating MOP extensibility. More related changes will happen in the
166 next several releases. (nothingmuch)
169 - New method - get_all_methods, replaces the deprecated
170 compute_all_applicable_methods. get_all_attributes provided for
171 consistency (nothingmuch)
172 - New method - wrap_method was refactored out of get_method_map
174 - New API for meta instance invalidation - invalidate_meta_instance,
175 invalidate_meta_instances, add_dependent_meta_instance,
176 remove_dependent_meta_instance, called automatically when attribute
177 definitions change and allows notification of dependent subclasses.
180 0.64 Sun August 3, 2008
181 * Class::MOP::Immutable
182 - fixing subtle edge case in immutable when you
184 - clean up option processing (nothingmuch)
186 * Class::MOP::Instance
187 - inlined initialize slot didn't match
188 non-inlined (nothingmuch)
190 0.63 Mon July 7, 2008
192 - load_class will initialize a metaclass even if
193 the class is already loaded (sartak)
194 - load_class now returns the metaclass instance
195 instead of just 1 (sartak)
198 - better error messages (sartak and Dave Rolsky)
200 0.62 Wed June 18, 2008
201 - in is_class_loaded, recognize scalar references (as opposed to globs) in
202 the symbol table as methods (these are optimized constant subs)
204 0.61 Fri. June 13, 2008
205 - Okay, lets give this another try and see if PAUSE
206 recognizes it correct this time.
208 0.60 Thurs. Jun 12, 2008
209 - Fixed a version number issue by bumping all modules
212 0.59 Thurs. Jun 12, 2008
213 !! Several fixes resulting in yet another 25-30% speedup !!
216 - now stores the instance of the instance
217 metaclass to avoid needless recomputation
218 and deletes it when the cache is blown
219 - introduce methods to query Class::MOP::Class for
220 the options used to make it immutable as well as
221 the proper immutable transformer. (groditi)
223 * Class::MOP::Package
224 - {add, has, get, remove}_package_symbol all
225 now accept a HASH ref argument as well as the
226 string. All internal usages now use the HASH
230 - MOP.xs does sanity checks on the coderef
232 - is_class_loaded check now uses code that
233 was improved in Moose's ClassName type
235 - nonsensical (undef, empty, reference) class
236 names now throw a more direct error in
238 - tests for this and other aspects of
244 Class::MOP::Method::Wrapped
245 Class::MOP::Attribute
246 - switched usage of reftype to ref because
249 0.58 Thurs. May 29, 2008
250 (late night release engineering)--
252 - fixing the version is META.yml, no functional
253 changes in this release
255 0.57 Wed. May 28, 2008
256 !! Several speedups resulting in 20-25% speedups !!
257 || (thanks to konobi, groditi, mst & CataMoose) !!
260 - made get_method_map use list_all_package_symbols
261 instead of manually grabbing each symbol
262 - streamlining &initialize somewhat, since it gets
265 * Class::MOP::Package
266 - made {get, has}_package_symbol not call
268 - inlining a few calls to &name with
269 direct HASH access key access
270 - added get_all_package_symbols to fetch
271 a HASH of items based on a type filter
272 similar to list_all_package_symbols
273 - added tests for this
276 Class::MOP::Method::Constructor
277 Class::MOP::Method::Generated
278 Class::MOP::Method::Accessor
279 - added more descriptive error message to help
280 keep people from wasting time tracking an error
281 that is easily fixed by upgrading.
283 * Class::MOP::Immutable
284 - Don't inline a destructor unless the user actually
286 - added tests for this
288 0.56 Saturday, May 24, 2008
290 - we now get the &check_package_cache_flag
291 function from MRO::Compat
292 - All XS based functionality now has a
293 Pure Perl alternative
294 - the CLASS_MOP_NO_XS environment variable
295 can now be used to force non-XS versions
298 * Class::MOP::Attribute
299 - add has_read_method and has_write_method
300 - get_{read,write}_method_ref now wraps the
301 anon-sub ref in the method metaclass when
303 - added tests for this
305 * Class::MOP::Immutable
306 - added the ability to "wrap" methods when
307 making the class immutable
310 - now handling the edge case of ->meta->identifier
311 dying by wrapping add_package_symbol to specifically
312 allow for it to work.
313 - added tests for this
315 * Class::MOP::Attribute
317 Class::MOP::Immutable
318 - any time a method meta object is constructed
319 we make sure to pass the correct package and
320 method name information
323 Class::MOP::Method::Wrapped
324 Class::MOP::Method::Generated
325 Class::MOP::Method::Accessor
326 Class::MOP::Method::Consructor
327 - the &wrap constructor method now requires that a
328 'package_name' and 'name' attribute are passed. This
329 is to help support the no-XS version, and will
330 throw an error if these are not supplied.
331 - all these classes are now bootstrapped properly
332 and now store the package_name and name attributes
335 ~ Build.PL has been removed since the
336 Module::Install support has been removed
338 0.55 Mon. April 28, 2008
339 - All classes now have proper C3 MRO support
340 - added MRO::Compat as a dependency to allow
341 for the C3 MRO support to Just Work in all
345 - rebless_instance now returns the instance
346 it has just blessed, this is mostly to
348 - set the attr correctly in rebless_instance
349 when it has no init_arg
350 - tweaked &linear_isa and &class_precedence_list
351 to support c3 classes.
353 0.54 Fri. March, 14, 2008
356 - making sure that load_class never gets
357 passed a value from @_ or $_ to squash
358 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
361 - make_{immutable,mutable} now return 1
363 - improved error handling in ->create method
364 - rebless_instance now takes extra params which
365 will be used to populate values
366 - added tests for this
369 - localizing the Data::Dumper configurations so
370 that it does not pollute others (RT #33509)
376 Class::MOP::Attribute
377 - these classes no longer define their own ->meta,
378 but instead just inherit from Class::MOP::Object
380 * Class::MOP::Instance
381 Class::MOP::Immutable
382 - these classes now inherit from Class::MOP::Object
385 - fixed the filename length on several
386 test files so we install on VMS better
388 - fixed incorrect use of catdir when it
389 should be catfile (RT #32385)
391 0.53 Thurs. Feb. 14, 1008
392 ~~ several doc. fixes and updates ~~
395 Class::MOP::Method::Constructor
396 Class::MOP::Attribute
397 - making init_arg accept an undefined value
398 to indicate that no constructor args can
399 be passed (thanks to nothingmuch)
400 - added tests for this
401 - added attribute initializer attribute (rjbs)
404 - making this use the new init_arg => undef
405 feature instead of the silly hack from
406 before (thanks to nothingmuch)
408 0.52 Tues. Jan. 22, 2008
410 - fixed bug in rebless_instance
413 * Class::MOP::Method::Constructor
414 - removed assumptions about the existence of
417 0.51 Mon. Jan. 14, 2008
418 ~~~ some misc. doc. fixes ~~~
419 ~~ updated copyright dates ~~
422 - now sets the IS_RUNNING_ON_5_10
423 constant so that we can take advantage
424 of some of the nice bits of 5.10
427 - uses the IS_RUNNING_ON_5_10 flag to
428 optimize the &linearized_isa method
429 and avoid the hack/check for circular
430 inheritence in &class_precedence_list
431 - added rebless_instance method (Sartak)
432 - added tests for this
434 * Class::MOP::Immutable
435 - the immutable class now keeps track of
436 the transformer which immutablized it
438 * Class::MOP::Instance
439 - added rebless_instance_structure method (Sartak)
440 - added tests for this
442 0.50 Fri. Dec. 21, 2007
444 - fixed bug in immutable to make sure that
445 transformation arguments are saved
447 - added tests for this
449 * Class::MOP::Immutable
450 - fixed a bug (see above)
452 * Class::MOP::Attribute
455 0.49 Fri. Dec. 14, 2007
456 !! Class::MOP now loads 2 x faster !!
457 !! with XS speedups (thanks konobi) !!
460 - removed the dependency on B
461 - added two XS functions (thanks konobi)
462 - get_code_info($code) which replaces all
463 the B fiddling we were doing with
464 faster/leaner XS level fiddling
465 - check_package_cache_flag($pkg_name) which
466 returns the PL_sub_generation variable to
467 be used to help manage method caching.
470 In 5.10 or greater this will actually
471 use the mro::get_pkg_gen instead to give
472 even more accurate caching information.
473 blblack++ for that stuff :)
476 - added the &subclasses method (thanks rlb)
477 - added the update_package_cache_flag and
478 reset_package_cache_flag which help keep
479 track of when we need to re-fetch the
481 - Several small improvements to take advantage
482 of the new method map caching features
484 0.48 Mon. Nov. 26, 2007
485 * Class::MOP::Attribute
486 - fixed get_read/write_method to handle the
487 HASH ref case, which makes the
488 get_read/write_method_ref handle it too.
489 - added more tests for this
491 0.47 Sat. Nov. 24, 2007
492 * Class::MOP::Attribute
493 - fixed misspelling in get_write_method_ref
494 - added more tests for this
496 0.46 Fri. Nov. 23, 2007
498 - added the linearized_isa method instead of constantly
499 pruning duplicate classes (this will be even more
500 useful in the 5.10-compat version coming soon)
502 * Class::MOP::Attribute
503 - added the get_read_method_ref and get_write_method_ref
504 methods which allow you to retrieve a CODE ref which
505 can always be used to read or write an attribute.
507 0.45 Thurs. Nov. 13, 2007
508 * Class::MOP::Attribute
509 - Fix error message on confess (groditi)
511 0.44 Thurs. Nov. 13, 2007
512 - Apparently I didn't make dist correctly (groditi)
514 0.43 Thurs. Nov. 13, 2007
516 - Add support for the 'builder' attribute (groditi)
519 - optimise metaclass-already-exists check in
520 construct_class_instance (groditi)
521 - duplicate check into initialize to save a
522 call through (groditi)
524 * Class::MOP::Attribute
525 - Add support for the 'builder' attribute (groditi)
526 - Make predicates check for the existence of a value, not whether
527 it is defined (groditi)
529 * Class::MOP::Instance
530 - Make predicates check for the existence of a value, not whether
531 it is defined (groditi)
533 * Class::MOP::Method::Accessor
534 - made this a subclass of Class::MOP::Method::Generated
535 - removed the relevant attributes
537 * Class::MOP::Method::Constructor
538 - fixed the cached values we had to be more sane
539 - made this a subclass of Class::MOP::Method::Generated
540 - fixed generated constructor so it properly handles
542 - added tests for this
543 - added the option to allow for both inlined and
544 non-inlined constructors.
545 - Update inlined methods for builder and predicate changes (groditi)
547 * Class::MOP::Method::Generated
548 - added this class as an abstract base for the
549 Class::MOP::Method::{Constructor,Accessor} classes
550 - added tests for this
553 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
554 - Tests for new predicate behavior (and corrections to old tests) (groditi)
557 - Update ArrayRef based class example to work with predicate changes
559 0.42 Mon. July 16, 2007
560 !!! Horray for mst, he fixed it !!!
562 * Class::MOP::Package
563 - alter symbol table handling to deal with 5.8.x and 5.9.x
566 - Get rid of the crappy workaround from 0.40/41
568 0.41 Sun. July 15, 2007
570 Arghh!!! My TODO test didn't work, so I handle
571 it manually now so that people can use this
572 with 5.9.5/bleadperl without issue.
574 0.40 Tues, July 3, 2007
576 ~ marked a test in 003_methods.t as TODO
577 for perl 5.9.5 (this test is irrelvant to
578 the module functioning on 5.9.5 for the most
581 0.39 Mon. June 18, 2007
582 * Class::MOP::Immutable
583 - added make_metaclass_mutable + docs (groditi)
584 - removed unused variable
585 - added create_immutable_transformer
586 necessary for sane overloading of immutable behavior
587 - tests for this (groditi)
590 - Immutability can now be undone,
591 added make_mutable + tests + docs (groditi)
592 - Massive changes to the way Immutable is done
593 for details see comments next to make_immutable
594 This fixes a bug where custom metaclasses broke
595 when made immutable. We are now keeping one immutable
596 metaclass instance per metaclass instead of just one
597 to prevent isa hierarchy corruption. Memory use will go
598 up, but I suspect it will be neglible.
599 - New tests added for this behavior. (groditi)
601 0.38 Thurs. May 31, 2007
602 ~~ More documentation updates ~~
604 * Class::MOP::Package
605 - we now deal with stub methods properly
606 - added tests for this
607 - fixed some tests failing on 5.9.5 (thanks blblack)
609 * Class::MOP::Attribute
610 - added get_read_method and get_write_method
611 thanks to groditi for this code, tests
613 - added tests and POD for this
616 - fixed RT issue #27329, clone object now
617 handles undef values correctly.
618 - added tests for this
619 - Corrected anon-class handling so that they
620 will not get reaped when instances still
621 exist which need to reference them. This is
622 the correct behavior, hopefully this is an
623 obscure enough feature that there are not too
624 many work arounds out in the wild.
625 - added tests for this by groditi
626 - updated docs to explain this
629 - load custom metaclasses automatically (thanks groditi)
630 - added tests for this behavior
632 0.37 Sat. March 10, 2007
633 ~~ Many, many documentation updates ~~
636 - added &load_class and &is_class_loaded
637 - added tests and docs for these
639 * Class::MOP::Attribute
640 - default now checks the instance with defined to
641 avoid setting off bool-overloads (found by Carl Franks)
645 - bad name in a test, causing meaningless failuress.
651 - All attribute names are now consistent and follow Perl 6
652 style (prefixed with the sigil, and ! as the twigil for
653 private attrs). This should not affect any code, unless
654 you broke encapsulation, in which case, it is your problem
657 !! Class::MOP::Class::Immutable has been removed
659 * Class::MOP::Method::Constructor
660 - this has been moved out of Class::MOP::Class::Immutable
661 and is a proper subclass of Class::MOP::Method now.
664 - this module now uses Class::MOP::Immutable for the
665 immutable transformation instead of
666 Class::MOP::Class::Immutable.
668 + Class::MOP::Immutable
669 - this module now controls the transformation from a mutable
670 to an immutable version of the class. Docs for this will
671 be coming eventually.
674 0.36 Sun. Nov. 5, 2006
676 - added a few 'no warnings' lines to keep annoying
677 (and meaningless) warnings from chirping during
681 - some more bootstrapping is now done on the new
684 * Class::MOP::Class::Immutable
686 - constructor generation is now handled by
687 the Class::MOP::Method::Constructor class
689 * Class::MOP::Method::Constructor
690 - created this to handle constructor generation
691 in Class::MOP::Class::Immutable
693 * Class::MOP::Attribute
695 - attributes now delegate to the
696 Class::MOP::Method::Accessor to generate
699 * Class::MOP::Method::Accessor
700 - all accessor generation functions from
701 Class::MOP::Attribute have been moved here
703 0.35 Sat. Sept. 30, 2006
705 * scripts/class_browser.pl
706 - initial prototype of a class browser, more
707 on this to come. Comments and patches are
711 - All Class::MOP::* accessors are no longer
712 re-generated in the bootstrap, instead
713 they are aliased from the originals
714 - fixed tests to reflect
715 - added Class::MOP::Method (and its subclasses)
717 - adjusted tests for this
718 - added the Class::MOP::Instance attributes
723 - methods are no longer blessed CODE refs
724 but are actual objects which can be CODE-ified
725 - adjusted tests to compensate
726 - adjusted docs for this
729 - changed how methods are dealt with to
730 encapsulate most of the work into the
731 &get_method_map method
732 - made several adjustments for the change
733 in Class::MOP::Method
734 - &add_attribute now checks if you are adding
735 a duplicate name, and properly removes the
736 old one before installing the new one
737 - added tests for this
738 - adjusted docs for this
740 * Class::MOP::Class::Immutable
741 - added caching of &get_method_map
742 - fixed issue with &get_package_symbol
743 - cleaned up the methods that die (patch by David Wheeler)
745 * Class::MOP::Package
746 - added filtering capabilities to
747 &list_all_package_symbols
749 0.34 Sat. Aug. 26, 2006
751 - added the %:methods attribute, which like
752 the $:version and such just actually goes
753 to the symbol table to get it's stuff.
754 However, it makes the MOP more complete.
756 - The &create method now requires that all
757 but the package name now is passed in as
758 named parameters. See docs for more info.
759 - updated docs and tests for this
762 - added &dump method to easily Data::Dumper
766 - cleaned up the initialization of attributes
767 which do not store things in the instance
768 - added the %:methods attribute definition to
771 ~ lots of misc. test cleanup
773 0.33 Sat. Aug. 19, 2006
775 - moved the metaclass cache out of here
776 and it is now in Class::MOP itself.
779 - moved all the metaclass cache stuff here
780 - fixed all tests for this
782 * Class::MOP::Attribute
783 - reference values (other than CODE refs)
784 are no longer allowed for defaults
785 - added tests for this
787 * Class::MOP::Package
788 - fixed an issue with perl 5.8.1 and how it deals
789 with symbol tables. The namespace hash is now
790 always reloaded from the symbol table.
792 ~ lots of misc. documentation cleanup
794 0.32 Sat. Aug. 12, 2006
795 + added Class::MOP::Object so that the
796 metamodel is more complete (and closer
797 to what Perl 6 will probably be).
799 * Class::MOP::Package
800 - refactored entire class, this is now
801 the primary gateway between the metaclass
802 and the Perl 5 symbol table
803 - added many tests for this
804 - this class is now a subclass of
806 - added some tests to reflect this
809 - refactored all symbol table access to
810 use Class::MOP::Package methods instead
813 - adding the $:version attribute in the bootstrap
814 so that Module has a version as an attribute
815 - see comment in Class::MOP for details
816 - added the $:authority attribute to this module
817 as well as an &identifier method, to bring us
818 ever closer to Perl 6 goodness
819 - I have added $AUTHORITY to all the modules
820 - added tests for this
822 * Class::MOP::Instance
823 - added &deinitialize_slot for removing slots
825 - added tests for this
827 * Class::MOP::Attribute
828 - added support for &deinitialize_slot for removing
829 slots from an instance
830 - added tests for this
832 0.31 Sat. July 15, 2006
835 - added &find_method_by_name to locate a method
836 anywhere within the class hierarchy
838 * Class::MOP::Attribute
839 - added &set_value and &get_value for getting
840 the value of the attribute for a particular
843 0.30 Wed. July 5, 2006
844 ---------------------------------------
845 This is the first version of Class::MOP
846 to introduce the immutable features which
847 will be used for optimizating the MOP.
848 This support should still be considered
849 experimental, but moving towards stability.
850 ---------------------------------------
852 * Created Class::MOP::Class::Immutable
854 * Created the Class::MOP::Package and
855 Class::MOP::Module classes to more
856 closely conform to Perl 6's meta-model
859 - now inherits from Class::MOP::Module
860 - several methods moved to ::Module and
861 ::Package and now inherited
862 - added tests for this
864 * Class::MOP::Instance
865 - added an is_inlinable method to allow other
866 classes to check before they attempt to optimize.
867 - added an inline_create_instance to inline
868 instance creation (of course)
871 - the Class::MOP::Class::*_package_variable
872 methods are all now methods of Class::MOP::Package
873 and called *_package_symbol instead. This is
874 because they are now more general purpose symbol
875 table manipulation methods.
877 0.29_02 Thurs. June 22, 2006
878 ++ DEVELOPER RELEASE ++
880 - small change in &create so that it behaves
881 properly when inherited
882 - small fix to &clone_instance
884 0.29_01 Fri. May 12, 2006
885 ++ DEVELOPER RELEASE ++
886 - This release works in combination with
887 Moose 0.09_01, it is a developer release
888 because it introduces a new instance
889 sub-protocol and has not yet been
893 - anon-classes are now properly garbage collected
894 - added tests for this
895 - improved method modifier wrapping
897 * Class::MOP::Instance
898 - added new instance protocol
899 - added tests for this
900 - changed all relevant modules and examples
902 - Class::MOP::Attribute
906 - you no longer need to specify the metaclass
907 itself, if it is not there, Class::MOP::Class
909 - updated tests for this
912 - added ArrayBasedStorage example to show
913 instance storage using ARRAY refs instead of
915 - added tests for this
916 - InsideOutClass is totally revised using the
917 new instance protocol
918 - added more tests for this
920 0.26 Mon. April 24, 2006
922 - added find_attribute_by_name method
923 - added tests and docs for this
924 - some small optimizations
926 * Class::MOP::Attribute
927 - some small optimizations
929 0.25 Thurs. April 20, 2006
931 - added create_anon_class for creating anonymous classes
932 - added tests for this
933 - added get_all_metaclasses, get_all_metaclass_names
934 and get_all_metaclass_instances method to allow
935 access to all the cached metaclass objects.
936 - attribute slot initialization is now the responsibility
937 of the attribute itself, and construct_instance now
938 delegates appropriately
940 * Class::MOP::Attribute
941 - attribute slot initialization is now the responsibility
942 of the attribute itself, so we added a method for it
943 called initialize_instance_slot
946 - adjusted all the examples to use the new attribute
947 initialize_instance_slot method
949 0.24 Tues. April 11, 2006
951 - cleaned up how the before/after/around method
952 modifiers get named with Sub::Name
954 0.23 Thurs. March 30, 2006
956 - fixed the way attribute defaults are handled
957 during instance construction (bug found by chansen)
959 * Class::MOP::Attribute
960 - read-only accessors ('reader') will now die if
961 passed more than one argument (attempting to write
963 - added tests for this
964 - adjusted all /example files to comply
966 0.22 Mon. March 20, 2006
968 - localized $@ in the *_package_variable functions
969 because otherwise, it does ugly things in Moose.
970 - added test case for this
972 0.21 Wed. March 15, 2006
974 - fixed issue where metaclasses are reaped from
975 our cache in global destruction, and so are not
976 available in DESTORY calls
978 0.20 Thurs. March 2, 2006
979 - removed the dependency for Clone since
980 we no longer to deep-cloning by default.
983 - added &package_name, &name and
984 &fully_qualified_name methods, some of
985 which were formerly private subs in
988 * Class::MOP::Method::Wrapped
989 - allows for a method to be wrapped with
990 before, after and around modifiers
991 - added tests and docs for this feature
994 - improved &get_package_symbol
995 - &version and &superclasses now use it
996 - methods are now blessed into Class::MOP::Method
998 - added methods to install CLOS-style method modifiers
999 - &add_before_method_modifier
1000 - &add_after_method_modifier
1001 - &add_around_method_modifier
1002 - added tests and docs for these
1003 - added &find_next_method_by_name which finds the
1004 equivalent of SUPER::method_name
1006 0.12 Thurs. Feb 23, 2006
1007 - reduced the dependency on B, no need to always
1011 - added docs to the C3 method dispatch order test
1012 - fixed missing Algorithm::C3 dependency by making
1013 the test skip if it is not installed
1015 0.11 Mon Feb. 20, 2006
1017 - added example of changing method dispatch order to C3
1020 - changed how clone_instance behaves, it now only does a
1021 shallow clone (see docs for more details)
1022 - added docs and tests
1024 0.10 Tues Feb. 14, 2006
1025 ** This release was mostly about writing more tests and
1026 cleaning out old and dusty code, the MOP should now
1027 be considered "ready to use".
1029 - adding more tests to get coverage up a little higher,
1030 mostly testing errors and edge cases.
1031 - test coverage is now at 99%
1034 - no longer optionally exports to UNIVERSAL::meta or
1035 creates a custom metaclass generator, use the
1036 metaclass pragma instead.
1039 - fixed a number of minor issues which came up in the
1040 error/edge-case tests
1042 * Class::MOP::Attribute
1043 - fixed a number of minor issues which came up in the
1044 error/edge-case tests
1047 - fixing the AttributesWithHistory example, it was broken.
1049 0.06 Thurs Feb. 9, 2006
1051 - adding new metaclass pragma to make setting up the
1052 metaclass a little more straightforward
1055 - clean up bootstrapping to include more complete
1056 attribute definitions for Class::MOP::Class and
1057 Class::MOP::Attribute (accessors, readers, writers,
1058 etc.) ... it is redundant, but is useful meta-info
1062 - fixing minor meta-circularity issue with &meta, it
1063 is now more useful for subclasses
1064 - added &get_attribute_map as an accessor for the
1065 hash of attribute meta objects
1066 - &compute_all_applicable_attributes now just returns
1067 the attribute meta-object, rather than the HASH ref
1068 since all the same info can be gotten from the
1069 attribute meta-object itself
1070 - updated docs & tests to reflect
1071 - added &clone_instance method which does a deep clone
1072 of the instance structure created by &construct_instance
1073 - added docs & tests for this
1074 - added Clone as a dependency
1075 - added &new_object and &clone_object convience methods to
1076 return blessed new or cloned instances
1077 - they handle Class::MOP::Class singletons correctly too
1078 - added docs & tests for this
1079 - cleaned up the &constuct_class_instance so that it behaves
1080 more like &construct_instance (and managed the singletons too)
1081 - added the &check_metaclass_compatibility method to make sure
1082 that metaclasses are upward and downward compatible.
1083 - added tests and docs for this
1086 - adjusting code to use the &Class::MOP::Class::meta
1088 - adjusting code to use the metaclass pragma
1090 0.05 Sat Feb. 4, 2006
1092 - added the &attribute_metaclass and &method_metaclass
1093 attributes which contain a metaclass name to use for
1094 attributes/methods respectively
1097 - bootstrap additional attributes for Class::MOP::Class
1100 - adjusted the example code and tests to use the new
1101 &attribute_metaclass feature of Class::MOP::Class
1102 - added new example:
1105 0.04 Fri Feb. 3, 2006
1107 - some documentation suggestions from #perl6
1109 * Class::MOP::Attribute
1110 - improved error messages
1113 - added new examples:
1114 - AttributesWithHistory
1115 - ClassEncapsultedAttributes
1117 0.03 Fri Feb. 3, 2006
1118 - converted to Module::Build instead of EU::MM
1120 * Class::MOP::Attribute
1121 - refactored method generation code
1122 - attributes are now associated with class directly
1125 - refactored the InsideOut example to take advantage
1126 of the Class::MOP::Attribute refactoring
1127 - changed example files to .pod files and hide thier
1128 package names from PAUSE (I don't want to own these
1129 namespaces really, they are just examples)
1131 0.02 Thurs Feb. 2, 2006
1132 - moving examples from t/lib/* to examples/*
1133 - adding POD documentation to the examples
1135 0.01 Thurs Feb. 2, 2006