1 Revision history for Perl extension Class-MOP.
5 - Pass options to _new, so subclass' attributes can be
8 0.71_02 Fri, December 5, 2008
9 * Class::MOP::Immutable
10 - Added a new attribute, inlined_constructor, which is true if
11 the constructor was inlined.
13 - Make get_all_package_symbols return a hash ref in scalar
14 context and deprecate calling it in list context with a
15 warning. (Florian Ragwitz)
17 - Various improvements and refactoring, making things more robust and
18 easier to maintain. (Florian Ragwitz)
20 0.71_01 Wed, December 3, 2008
22 - Add an "execute" method to invoke the body so
23 we can avoid using the coderef overload (Sartak)
24 * Class::MOP::Immutable
25 - When we memoize methods, get their results lazily
26 to remove some compile-time cost (Sartak)
27 - Small speedup from eliminating several method
30 - Some small internal tweaks to try to reduce the number of
31 times we call get_method_map when bootstrapping the MOP. This
32 might make loading Class::MOP (and Moose) a little
34 - Implemented an optional XS version of get_method_map. Mostly
35 taken from a patch by Goro Fuji (rt.cpan.org #41080), with
36 help form Florian Ragwitz. (Dave Rolsky)
37 - Make the behaviour of of get_all_package_symbols (and
38 therefore get_method_map) consistent for stub methods. Report
39 and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
41 0.71 Wed November 26, 2008
44 - Actual package creation has moved upward from
45 Class to Module so that Moose roles can share
48 0.70_01 Mon, November 19, 2008
50 - Fixes for failures with blead (Florian Ragwitz)
51 - Silenced compiler warnings (Florian Ragwitz)
53 0.70 Fri, November 14, 2008
55 - Fixed an odd corner case where the XS version of
56 get_all_package_symbols could cause a segfault. This only
57 happened with inlined constants in Perl 5.10.0 (Florian
60 0.69 Fri, November 7, 2008
61 * Class::MOP::Method::Wrapped
62 - Added introspection methods for method modifiers (Dave Rolsky)
65 0.68 Fri October 24, 2008
67 - Make load_class require by file name instead of module name.
68 This stops confusing error messages when loading '__PACKAGE__'.
70 - Add load_one_class_of function to enable you to load one of a
71 list of classes, rather than having to call load_class multiple
72 times in an eval. (t0m)
74 0.67 Tue October 14, 2008
76 - Call a method on the class after setting the superclass list
77 so that we can get Perl to detect cycles before MRO::Compat
78 spirals into an infinite loop (sartak)
79 - Reported by Schwern, [rt.cpan.org #39001]
80 - In create(), pass unused options on to initialize()
83 0.66 Sat September 20, 2008
84 !! This release has an incompatible change regarding !!
85 introspection of a class's method with Class::MOP::Class !!
88 - We (us maintainers) now run all tests with XS and then without
89 XS, which should help us catch skew between the XS/pure Perl
93 ! The alias_method method has been deprecated. It now simply
94 calls add_method instead. There is no distinction between
95 aliased methods and "real" methods.
97 This means that methods added via alias_method now show up as
98 part of the class's method list/map. This is a backwards
99 incompatible change, but seems unlikely to break any
100 code. Famous last words. (Dave Rolsky)
103 - Fixed the spelling of "compatibility", but we still have a
104 "check_metaclass_compatability" method for backwards
107 0.65 Mon September 1, 2008
108 For those not following the series of dev releases, the changes
109 from 0.64 from 0.65 can mostly be summed up as a lot performance
110 improvements by nothingmuch, including new optional XS versions of
111 some methods. Also, Class::MOP now works _without_ any XS modules,
112 for sad systems without a compiler.
115 - Added name and package_name XS accessors, and make sure all
116 the XS and Perl versions work the same way. (Dave Rolsky)
119 - The XS versions of various methods just returned undef when
120 called class methods, rather than dying like the pure Perl
121 versions. (Dave Rolsky)
123 0.64_07 Fri August 29, 2008
125 - Silenced warnings that managed to break Moose tests when XS
126 was loaded. (Dave Rolsky)
127 - Some XS versions of methods were ignored because of typos in
128 MOP.xs. (Dave Rolsky)
130 0.64_06 Mon August 25, 2008
131 * Class::MOP (MOP.xs)
132 - Another MS VC++ fix, cannot declare a variable in the middle
133 of a scope (Taro Nishino).
135 0.64_05 Sun August 24, 2008
137 - None of the dev releases actually loaded the XS properly, but
138 we silently fell back to the pure Perl version of the
141 * Class::MOP (MOP.xs)
142 - Replaced some code that used functions not available on Visual
143 C++ with some Perl XS API bits (Dave Rolsky).
145 0.64_04 Sat August 23, 2008
147 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
149 * pod.t and pod_coveraget.t
150 - These are no longer shipped with the tarball because of bogus
151 failures from CPAN testers. (Dave Rolsky)
153 0.64_03 Thu August 21, 2008
154 * Class::MOP::Package
155 - Some (legit) code was misparsed by earlier 5.8.x
156 releases. (nothingmuch)
159 - Fix a constant in void context warning (nothingmuch)
161 0.64_02 Thu August 21, 2008
162 * Makefile.PL and Class::MOP
163 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
166 - Add missing prereqs that got lost in the switch away from
169 * Class::MOP::Instance
170 - New method - get_all_attributes (nothingmuch)
172 0.64_01 Wed August 20, 2008
174 - We now check to see if you have a compiler. If you don't, the
175 module installs without some XS bits, but will work the same
176 as with XS. This should make it easier to install on platforms
177 without a compiler (like Windows). (Dave Rolsky)
180 - Perl 6 style attribute naming replaced with sane style ('methods', not
181 '%!methods'). These changes should not impact any existing API uses.
185 - Quite a number of optimizations based on profiling, including
186 allowing constructors to take hash references instead of
187 hashes, duplicating some frequently used code in XS, and
188 making constructors immutable. These changes should not impact
189 any existing API uses. (nothingmuch)
192 - Constructors now respect the meta attributes of their subclasses,
193 facilitating MOP extensibility. More related changes will happen in the
194 next several releases. (nothingmuch)
197 - New method - get_all_methods, replaces the deprecated
198 compute_all_applicable_methods. get_all_attributes provided for
199 consistency (nothingmuch)
200 - New method - wrap_method was refactored out of get_method_map
202 - New API for meta instance invalidation - invalidate_meta_instance,
203 invalidate_meta_instances, add_dependent_meta_instance,
204 remove_dependent_meta_instance, called automatically when attribute
205 definitions change and allows notification of dependent subclasses.
208 0.64 Sun August 3, 2008
209 * Class::MOP::Immutable
210 - fixing subtle edge case in immutable when you
212 - clean up option processing (nothingmuch)
214 * Class::MOP::Instance
215 - inlined initialize slot didn't match
216 non-inlined (nothingmuch)
218 0.63 Mon July 7, 2008
220 - load_class will initialize a metaclass even if
221 the class is already loaded (sartak)
222 - load_class now returns the metaclass instance
223 instead of just 1 (sartak)
226 - better error messages (sartak and Dave Rolsky)
228 0.62 Wed June 18, 2008
229 - in is_class_loaded, recognize scalar references (as opposed to globs) in
230 the symbol table as methods (these are optimized constant subs)
232 0.61 Fri. June 13, 2008
233 - Okay, lets give this another try and see if PAUSE
234 recognizes it correct this time.
236 0.60 Thurs. Jun 12, 2008
237 - Fixed a version number issue by bumping all modules
240 0.59 Thurs. Jun 12, 2008
241 !! Several fixes resulting in yet another 25-30% speedup !!
244 - now stores the instance of the instance
245 metaclass to avoid needless recomputation
246 and deletes it when the cache is blown
247 - introduce methods to query Class::MOP::Class for
248 the options used to make it immutable as well as
249 the proper immutable transformer. (groditi)
251 * Class::MOP::Package
252 - {add, has, get, remove}_package_symbol all
253 now accept a HASH ref argument as well as the
254 string. All internal usages now use the HASH
258 - MOP.xs does sanity checks on the coderef
260 - is_class_loaded check now uses code that
261 was improved in Moose's ClassName type
263 - nonsensical (undef, empty, reference) class
264 names now throw a more direct error in
266 - tests for this and other aspects of
272 Class::MOP::Method::Wrapped
273 Class::MOP::Attribute
274 - switched usage of reftype to ref because
277 0.58 Thurs. May 29, 2008
278 (late night release engineering)--
280 - fixing the version is META.yml, no functional
281 changes in this release
283 0.57 Wed. May 28, 2008
284 !! Several speedups resulting in 20-25% speedups !!
285 || (thanks to konobi, groditi, mst & CataMoose) !!
288 - made get_method_map use list_all_package_symbols
289 instead of manually grabbing each symbol
290 - streamlining &initialize somewhat, since it gets
293 * Class::MOP::Package
294 - made {get, has}_package_symbol not call
296 - inlining a few calls to &name with
297 direct HASH access key access
298 - added get_all_package_symbols to fetch
299 a HASH of items based on a type filter
300 similar to list_all_package_symbols
301 - added tests for this
304 Class::MOP::Method::Constructor
305 Class::MOP::Method::Generated
306 Class::MOP::Method::Accessor
307 - added more descriptive error message to help
308 keep people from wasting time tracking an error
309 that is easily fixed by upgrading.
311 * Class::MOP::Immutable
312 - Don't inline a destructor unless the user actually
314 - added tests for this
316 0.56 Saturday, May 24, 2008
318 - we now get the &check_package_cache_flag
319 function from MRO::Compat
320 - All XS based functionality now has a
321 Pure Perl alternative
322 - the CLASS_MOP_NO_XS environment variable
323 can now be used to force non-XS versions
326 * Class::MOP::Attribute
327 - add has_read_method and has_write_method
328 - get_{read,write}_method_ref now wraps the
329 anon-sub ref in the method metaclass when
331 - added tests for this
333 * Class::MOP::Immutable
334 - added the ability to "wrap" methods when
335 making the class immutable
338 - now handling the edge case of ->meta->identifier
339 dying by wrapping add_package_symbol to specifically
340 allow for it to work.
341 - added tests for this
343 * Class::MOP::Attribute
345 Class::MOP::Immutable
346 - any time a method meta object is constructed
347 we make sure to pass the correct package and
348 method name information
351 Class::MOP::Method::Wrapped
352 Class::MOP::Method::Generated
353 Class::MOP::Method::Accessor
354 Class::MOP::Method::Consructor
355 - the &wrap constructor method now requires that a
356 'package_name' and 'name' attribute are passed. This
357 is to help support the no-XS version, and will
358 throw an error if these are not supplied.
359 - all these classes are now bootstrapped properly
360 and now store the package_name and name attributes
363 ~ Build.PL has been removed since the
364 Module::Install support has been removed
366 0.55 Mon. April 28, 2008
367 - All classes now have proper C3 MRO support
368 - added MRO::Compat as a dependency to allow
369 for the C3 MRO support to Just Work in all
373 - rebless_instance now returns the instance
374 it has just blessed, this is mostly to
376 - set the attr correctly in rebless_instance
377 when it has no init_arg
378 - tweaked &linear_isa and &class_precedence_list
379 to support c3 classes.
381 0.54 Fri. March, 14, 2008
384 - making sure that load_class never gets
385 passed a value from @_ or $_ to squash
386 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
389 - make_{immutable,mutable} now return 1
391 - improved error handling in ->create method
392 - rebless_instance now takes extra params which
393 will be used to populate values
394 - added tests for this
397 - localizing the Data::Dumper configurations so
398 that it does not pollute others (RT #33509)
404 Class::MOP::Attribute
405 - these classes no longer define their own ->meta,
406 but instead just inherit from Class::MOP::Object
408 * Class::MOP::Instance
409 Class::MOP::Immutable
410 - these classes now inherit from Class::MOP::Object
413 - fixed the filename length on several
414 test files so we install on VMS better
416 - fixed incorrect use of catdir when it
417 should be catfile (RT #32385)
419 0.53 Thurs. Feb. 14, 1008
420 ~~ several doc. fixes and updates ~~
423 Class::MOP::Method::Constructor
424 Class::MOP::Attribute
425 - making init_arg accept an undefined value
426 to indicate that no constructor args can
427 be passed (thanks to nothingmuch)
428 - added tests for this
429 - added attribute initializer attribute (rjbs)
432 - making this use the new init_arg => undef
433 feature instead of the silly hack from
434 before (thanks to nothingmuch)
436 0.52 Tues. Jan. 22, 2008
438 - fixed bug in rebless_instance
441 * Class::MOP::Method::Constructor
442 - removed assumptions about the existence of
445 0.51 Mon. Jan. 14, 2008
446 ~~~ some misc. doc. fixes ~~~
447 ~~ updated copyright dates ~~
450 - now sets the IS_RUNNING_ON_5_10
451 constant so that we can take advantage
452 of some of the nice bits of 5.10
455 - uses the IS_RUNNING_ON_5_10 flag to
456 optimize the &linearized_isa method
457 and avoid the hack/check for circular
458 inheritence in &class_precedence_list
459 - added rebless_instance method (Sartak)
460 - added tests for this
462 * Class::MOP::Immutable
463 - the immutable class now keeps track of
464 the transformer which immutablized it
466 * Class::MOP::Instance
467 - added rebless_instance_structure method (Sartak)
468 - added tests for this
470 0.50 Fri. Dec. 21, 2007
472 - fixed bug in immutable to make sure that
473 transformation arguments are saved
475 - added tests for this
477 * Class::MOP::Immutable
478 - fixed a bug (see above)
480 * Class::MOP::Attribute
483 0.49 Fri. Dec. 14, 2007
484 !! Class::MOP now loads 2 x faster !!
485 !! with XS speedups (thanks konobi) !!
488 - removed the dependency on B
489 - added two XS functions (thanks konobi)
490 - get_code_info($code) which replaces all
491 the B fiddling we were doing with
492 faster/leaner XS level fiddling
493 - check_package_cache_flag($pkg_name) which
494 returns the PL_sub_generation variable to
495 be used to help manage method caching.
498 In 5.10 or greater this will actually
499 use the mro::get_pkg_gen instead to give
500 even more accurate caching information.
501 blblack++ for that stuff :)
504 - added the &subclasses method (thanks rlb)
505 - added the update_package_cache_flag and
506 reset_package_cache_flag which help keep
507 track of when we need to re-fetch the
509 - Several small improvements to take advantage
510 of the new method map caching features
512 0.48 Mon. Nov. 26, 2007
513 * Class::MOP::Attribute
514 - fixed get_read/write_method to handle the
515 HASH ref case, which makes the
516 get_read/write_method_ref handle it too.
517 - added more tests for this
519 0.47 Sat. Nov. 24, 2007
520 * Class::MOP::Attribute
521 - fixed misspelling in get_write_method_ref
522 - added more tests for this
524 0.46 Fri. Nov. 23, 2007
526 - added the linearized_isa method instead of constantly
527 pruning duplicate classes (this will be even more
528 useful in the 5.10-compat version coming soon)
530 * Class::MOP::Attribute
531 - added the get_read_method_ref and get_write_method_ref
532 methods which allow you to retrieve a CODE ref which
533 can always be used to read or write an attribute.
535 0.45 Thurs. Nov. 13, 2007
536 * Class::MOP::Attribute
537 - Fix error message on confess (groditi)
539 0.44 Thurs. Nov. 13, 2007
540 - Apparently I didn't make dist correctly (groditi)
542 0.43 Thurs. Nov. 13, 2007
544 - Add support for the 'builder' attribute (groditi)
547 - optimise metaclass-already-exists check in
548 construct_class_instance (groditi)
549 - duplicate check into initialize to save a
550 call through (groditi)
552 * Class::MOP::Attribute
553 - Add support for the 'builder' attribute (groditi)
554 - Make predicates check for the existence of a value, not whether
555 it is defined (groditi)
557 * Class::MOP::Instance
558 - Make predicates check for the existence of a value, not whether
559 it is defined (groditi)
561 * Class::MOP::Method::Accessor
562 - made this a subclass of Class::MOP::Method::Generated
563 - removed the relevant attributes
565 * Class::MOP::Method::Constructor
566 - fixed the cached values we had to be more sane
567 - made this a subclass of Class::MOP::Method::Generated
568 - fixed generated constructor so it properly handles
570 - added tests for this
571 - added the option to allow for both inlined and
572 non-inlined constructors.
573 - Update inlined methods for builder and predicate changes (groditi)
575 * Class::MOP::Method::Generated
576 - added this class as an abstract base for the
577 Class::MOP::Method::{Constructor,Accessor} classes
578 - added tests for this
581 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
582 - Tests for new predicate behavior (and corrections to old tests) (groditi)
585 - Update ArrayRef based class example to work with predicate changes
587 0.42 Mon. July 16, 2007
588 !!! Horray for mst, he fixed it !!!
590 * Class::MOP::Package
591 - alter symbol table handling to deal with 5.8.x and 5.9.x
594 - Get rid of the crappy workaround from 0.40/41
596 0.41 Sun. July 15, 2007
598 Arghh!!! My TODO test didn't work, so I handle
599 it manually now so that people can use this
600 with 5.9.5/bleadperl without issue.
602 0.40 Tues, July 3, 2007
604 ~ marked a test in 003_methods.t as TODO
605 for perl 5.9.5 (this test is irrelvant to
606 the module functioning on 5.9.5 for the most
609 0.39 Mon. June 18, 2007
610 * Class::MOP::Immutable
611 - added make_metaclass_mutable + docs (groditi)
612 - removed unused variable
613 - added create_immutable_transformer
614 necessary for sane overloading of immutable behavior
615 - tests for this (groditi)
618 - Immutability can now be undone,
619 added make_mutable + tests + docs (groditi)
620 - Massive changes to the way Immutable is done
621 for details see comments next to make_immutable
622 This fixes a bug where custom metaclasses broke
623 when made immutable. We are now keeping one immutable
624 metaclass instance per metaclass instead of just one
625 to prevent isa hierarchy corruption. Memory use will go
626 up, but I suspect it will be neglible.
627 - New tests added for this behavior. (groditi)
629 0.38 Thurs. May 31, 2007
630 ~~ More documentation updates ~~
632 * Class::MOP::Package
633 - we now deal with stub methods properly
634 - added tests for this
635 - fixed some tests failing on 5.9.5 (thanks blblack)
637 * Class::MOP::Attribute
638 - added get_read_method and get_write_method
639 thanks to groditi for this code, tests
641 - added tests and POD for this
644 - fixed RT issue #27329, clone object now
645 handles undef values correctly.
646 - added tests for this
647 - Corrected anon-class handling so that they
648 will not get reaped when instances still
649 exist which need to reference them. This is
650 the correct behavior, hopefully this is an
651 obscure enough feature that there are not too
652 many work arounds out in the wild.
653 - added tests for this by groditi
654 - updated docs to explain this
657 - load custom metaclasses automatically (thanks groditi)
658 - added tests for this behavior
660 0.37 Sat. March 10, 2007
661 ~~ Many, many documentation updates ~~
664 - added &load_class and &is_class_loaded
665 - added tests and docs for these
667 * Class::MOP::Attribute
668 - default now checks the instance with defined to
669 avoid setting off bool-overloads (found by Carl Franks)
673 - bad name in a test, causing meaningless failuress.
679 - All attribute names are now consistent and follow Perl 6
680 style (prefixed with the sigil, and ! as the twigil for
681 private attrs). This should not affect any code, unless
682 you broke encapsulation, in which case, it is your problem
685 !! Class::MOP::Class::Immutable has been removed
687 * Class::MOP::Method::Constructor
688 - this has been moved out of Class::MOP::Class::Immutable
689 and is a proper subclass of Class::MOP::Method now.
692 - this module now uses Class::MOP::Immutable for the
693 immutable transformation instead of
694 Class::MOP::Class::Immutable.
696 + Class::MOP::Immutable
697 - this module now controls the transformation from a mutable
698 to an immutable version of the class. Docs for this will
699 be coming eventually.
702 0.36 Sun. Nov. 5, 2006
704 - added a few 'no warnings' lines to keep annoying
705 (and meaningless) warnings from chirping during
709 - some more bootstrapping is now done on the new
712 * Class::MOP::Class::Immutable
714 - constructor generation is now handled by
715 the Class::MOP::Method::Constructor class
717 * Class::MOP::Method::Constructor
718 - created this to handle constructor generation
719 in Class::MOP::Class::Immutable
721 * Class::MOP::Attribute
723 - attributes now delegate to the
724 Class::MOP::Method::Accessor to generate
727 * Class::MOP::Method::Accessor
728 - all accessor generation functions from
729 Class::MOP::Attribute have been moved here
731 0.35 Sat. Sept. 30, 2006
733 * scripts/class_browser.pl
734 - initial prototype of a class browser, more
735 on this to come. Comments and patches are
739 - All Class::MOP::* accessors are no longer
740 re-generated in the bootstrap, instead
741 they are aliased from the originals
742 - fixed tests to reflect
743 - added Class::MOP::Method (and its subclasses)
745 - adjusted tests for this
746 - added the Class::MOP::Instance attributes
751 - methods are no longer blessed CODE refs
752 but are actual objects which can be CODE-ified
753 - adjusted tests to compensate
754 - adjusted docs for this
757 - changed how methods are dealt with to
758 encapsulate most of the work into the
759 &get_method_map method
760 - made several adjustments for the change
761 in Class::MOP::Method
762 - &add_attribute now checks if you are adding
763 a duplicate name, and properly removes the
764 old one before installing the new one
765 - added tests for this
766 - adjusted docs for this
768 * Class::MOP::Class::Immutable
769 - added caching of &get_method_map
770 - fixed issue with &get_package_symbol
771 - cleaned up the methods that die (patch by David Wheeler)
773 * Class::MOP::Package
774 - added filtering capabilities to
775 &list_all_package_symbols
777 0.34 Sat. Aug. 26, 2006
779 - added the %:methods attribute, which like
780 the $:version and such just actually goes
781 to the symbol table to get it's stuff.
782 However, it makes the MOP more complete.
784 - The &create method now requires that all
785 but the package name now is passed in as
786 named parameters. See docs for more info.
787 - updated docs and tests for this
790 - added &dump method to easily Data::Dumper
794 - cleaned up the initialization of attributes
795 which do not store things in the instance
796 - added the %:methods attribute definition to
799 ~ lots of misc. test cleanup
801 0.33 Sat. Aug. 19, 2006
803 - moved the metaclass cache out of here
804 and it is now in Class::MOP itself.
807 - moved all the metaclass cache stuff here
808 - fixed all tests for this
810 * Class::MOP::Attribute
811 - reference values (other than CODE refs)
812 are no longer allowed for defaults
813 - added tests for this
815 * Class::MOP::Package
816 - fixed an issue with perl 5.8.1 and how it deals
817 with symbol tables. The namespace hash is now
818 always reloaded from the symbol table.
820 ~ lots of misc. documentation cleanup
822 0.32 Sat. Aug. 12, 2006
823 + added Class::MOP::Object so that the
824 metamodel is more complete (and closer
825 to what Perl 6 will probably be).
827 * Class::MOP::Package
828 - refactored entire class, this is now
829 the primary gateway between the metaclass
830 and the Perl 5 symbol table
831 - added many tests for this
832 - this class is now a subclass of
834 - added some tests to reflect this
837 - refactored all symbol table access to
838 use Class::MOP::Package methods instead
841 - adding the $:version attribute in the bootstrap
842 so that Module has a version as an attribute
843 - see comment in Class::MOP for details
844 - added the $:authority attribute to this module
845 as well as an &identifier method, to bring us
846 ever closer to Perl 6 goodness
847 - I have added $AUTHORITY to all the modules
848 - added tests for this
850 * Class::MOP::Instance
851 - added &deinitialize_slot for removing slots
853 - added tests for this
855 * Class::MOP::Attribute
856 - added support for &deinitialize_slot for removing
857 slots from an instance
858 - added tests for this
860 0.31 Sat. July 15, 2006
863 - added &find_method_by_name to locate a method
864 anywhere within the class hierarchy
866 * Class::MOP::Attribute
867 - added &set_value and &get_value for getting
868 the value of the attribute for a particular
871 0.30 Wed. July 5, 2006
872 ---------------------------------------
873 This is the first version of Class::MOP
874 to introduce the immutable features which
875 will be used for optimizating the MOP.
876 This support should still be considered
877 experimental, but moving towards stability.
878 ---------------------------------------
880 * Created Class::MOP::Class::Immutable
882 * Created the Class::MOP::Package and
883 Class::MOP::Module classes to more
884 closely conform to Perl 6's meta-model
887 - now inherits from Class::MOP::Module
888 - several methods moved to ::Module and
889 ::Package and now inherited
890 - added tests for this
892 * Class::MOP::Instance
893 - added an is_inlinable method to allow other
894 classes to check before they attempt to optimize.
895 - added an inline_create_instance to inline
896 instance creation (of course)
899 - the Class::MOP::Class::*_package_variable
900 methods are all now methods of Class::MOP::Package
901 and called *_package_symbol instead. This is
902 because they are now more general purpose symbol
903 table manipulation methods.
905 0.29_02 Thurs. June 22, 2006
906 ++ DEVELOPER RELEASE ++
908 - small change in &create so that it behaves
909 properly when inherited
910 - small fix to &clone_instance
912 0.29_01 Fri. May 12, 2006
913 ++ DEVELOPER RELEASE ++
914 - This release works in combination with
915 Moose 0.09_01, it is a developer release
916 because it introduces a new instance
917 sub-protocol and has not yet been
921 - anon-classes are now properly garbage collected
922 - added tests for this
923 - improved method modifier wrapping
925 * Class::MOP::Instance
926 - added new instance protocol
927 - added tests for this
928 - changed all relevant modules and examples
930 - Class::MOP::Attribute
934 - you no longer need to specify the metaclass
935 itself, if it is not there, Class::MOP::Class
937 - updated tests for this
940 - added ArrayBasedStorage example to show
941 instance storage using ARRAY refs instead of
943 - added tests for this
944 - InsideOutClass is totally revised using the
945 new instance protocol
946 - added more tests for this
948 0.26 Mon. April 24, 2006
950 - added find_attribute_by_name method
951 - added tests and docs for this
952 - some small optimizations
954 * Class::MOP::Attribute
955 - some small optimizations
957 0.25 Thurs. April 20, 2006
959 - added create_anon_class for creating anonymous classes
960 - added tests for this
961 - added get_all_metaclasses, get_all_metaclass_names
962 and get_all_metaclass_instances method to allow
963 access to all the cached metaclass objects.
964 - attribute slot initialization is now the responsibility
965 of the attribute itself, and construct_instance now
966 delegates appropriately
968 * Class::MOP::Attribute
969 - attribute slot initialization is now the responsibility
970 of the attribute itself, so we added a method for it
971 called initialize_instance_slot
974 - adjusted all the examples to use the new attribute
975 initialize_instance_slot method
977 0.24 Tues. April 11, 2006
979 - cleaned up how the before/after/around method
980 modifiers get named with Sub::Name
982 0.23 Thurs. March 30, 2006
984 - fixed the way attribute defaults are handled
985 during instance construction (bug found by chansen)
987 * Class::MOP::Attribute
988 - read-only accessors ('reader') will now die if
989 passed more than one argument (attempting to write
991 - added tests for this
992 - adjusted all /example files to comply
994 0.22 Mon. March 20, 2006
996 - localized $@ in the *_package_variable functions
997 because otherwise, it does ugly things in Moose.
998 - added test case for this
1000 0.21 Wed. March 15, 2006
1002 - fixed issue where metaclasses are reaped from
1003 our cache in global destruction, and so are not
1004 available in DESTORY calls
1006 0.20 Thurs. March 2, 2006
1007 - removed the dependency for Clone since
1008 we no longer to deep-cloning by default.
1010 * Class::MOP::Method
1011 - added &package_name, &name and
1012 &fully_qualified_name methods, some of
1013 which were formerly private subs in
1016 * Class::MOP::Method::Wrapped
1017 - allows for a method to be wrapped with
1018 before, after and around modifiers
1019 - added tests and docs for this feature
1022 - improved &get_package_symbol
1023 - &version and &superclasses now use it
1024 - methods are now blessed into Class::MOP::Method
1026 - added methods to install CLOS-style method modifiers
1027 - &add_before_method_modifier
1028 - &add_after_method_modifier
1029 - &add_around_method_modifier
1030 - added tests and docs for these
1031 - added &find_next_method_by_name which finds the
1032 equivalent of SUPER::method_name
1034 0.12 Thurs. Feb 23, 2006
1035 - reduced the dependency on B, no need to always
1039 - added docs to the C3 method dispatch order test
1040 - fixed missing Algorithm::C3 dependency by making
1041 the test skip if it is not installed
1043 0.11 Mon Feb. 20, 2006
1045 - added example of changing method dispatch order to C3
1048 - changed how clone_instance behaves, it now only does a
1049 shallow clone (see docs for more details)
1050 - added docs and tests
1052 0.10 Tues Feb. 14, 2006
1053 ** This release was mostly about writing more tests and
1054 cleaning out old and dusty code, the MOP should now
1055 be considered "ready to use".
1057 - adding more tests to get coverage up a little higher,
1058 mostly testing errors and edge cases.
1059 - test coverage is now at 99%
1062 - no longer optionally exports to UNIVERSAL::meta or
1063 creates a custom metaclass generator, use the
1064 metaclass pragma instead.
1067 - fixed a number of minor issues which came up in the
1068 error/edge-case tests
1070 * Class::MOP::Attribute
1071 - fixed a number of minor issues which came up in the
1072 error/edge-case tests
1075 - fixing the AttributesWithHistory example, it was broken.
1077 0.06 Thurs Feb. 9, 2006
1079 - adding new metaclass pragma to make setting up the
1080 metaclass a little more straightforward
1083 - clean up bootstrapping to include more complete
1084 attribute definitions for Class::MOP::Class and
1085 Class::MOP::Attribute (accessors, readers, writers,
1086 etc.) ... it is redundant, but is useful meta-info
1090 - fixing minor meta-circularity issue with &meta, it
1091 is now more useful for subclasses
1092 - added &get_attribute_map as an accessor for the
1093 hash of attribute meta objects
1094 - &compute_all_applicable_attributes now just returns
1095 the attribute meta-object, rather than the HASH ref
1096 since all the same info can be gotten from the
1097 attribute meta-object itself
1098 - updated docs & tests to reflect
1099 - added &clone_instance method which does a deep clone
1100 of the instance structure created by &construct_instance
1101 - added docs & tests for this
1102 - added Clone as a dependency
1103 - added &new_object and &clone_object convience methods to
1104 return blessed new or cloned instances
1105 - they handle Class::MOP::Class singletons correctly too
1106 - added docs & tests for this
1107 - cleaned up the &constuct_class_instance so that it behaves
1108 more like &construct_instance (and managed the singletons too)
1109 - added the &check_metaclass_compatibility method to make sure
1110 that metaclasses are upward and downward compatible.
1111 - added tests and docs for this
1114 - adjusting code to use the &Class::MOP::Class::meta
1116 - adjusting code to use the metaclass pragma
1118 0.05 Sat Feb. 4, 2006
1120 - added the &attribute_metaclass and &method_metaclass
1121 attributes which contain a metaclass name to use for
1122 attributes/methods respectively
1125 - bootstrap additional attributes for Class::MOP::Class
1128 - adjusted the example code and tests to use the new
1129 &attribute_metaclass feature of Class::MOP::Class
1130 - added new example:
1133 0.04 Fri Feb. 3, 2006
1135 - some documentation suggestions from #perl6
1137 * Class::MOP::Attribute
1138 - improved error messages
1141 - added new examples:
1142 - AttributesWithHistory
1143 - ClassEncapsultedAttributes
1145 0.03 Fri Feb. 3, 2006
1146 - converted to Module::Build instead of EU::MM
1148 * Class::MOP::Attribute
1149 - refactored method generation code
1150 - attributes are now associated with class directly
1153 - refactored the InsideOut example to take advantage
1154 of the Class::MOP::Attribute refactoring
1155 - changed example files to .pod files and hide thier
1156 package names from PAUSE (I don't want to own these
1157 namespaces really, they are just examples)
1159 0.02 Thurs Feb. 2, 2006
1160 - moving examples from t/lib/* to examples/*
1161 - adding POD documentation to the examples
1163 0.01 Thurs Feb. 2, 2006