1 Revision history for Perl extension Class-MOP.
5 - Call a method on the class after setting the superclass list
6 so that we can get Perl to detect cycles before MRO::Compat
7 spirals into an infinite loop (sartak)
8 - Reported by Schwern, [rt.cpan.org #39001]
9 - In create(), pass unused options on to initialize()
12 0.66 Sat September 20, 2008
13 !! This release has an incompatible change regarding !!
14 introspection of a class's method with Class::MOP::Class !!
17 - We (us maintainers) now run all tests with XS and then without
18 XS, which should help us catch skew between the XS/pure Perl
22 ! The alias_method method has been deprecated. It now simply
23 calls add_method instead. There is no distinction between
24 aliased methods and "real" methods.
26 This means that methods added via alias_method now show up as
27 part of the class's method list/map. This is a backwards
28 incompatible change, but seems unlikely to break any
29 code. Famous last words. (Dave Rolsky)
32 - Fixed the spelling of "compatibility", but we still have a
33 "check_metaclass_compatability" method for backwards
36 0.65 Mon September 1, 2008
37 For those not following the series of dev releases, the changes
38 from 0.64 from 0.67 can mostly be summed up as a lot performance
39 improvements by nothingmuch, including new optional XS versions of
40 some methods. Also, Class::MOP now works _without_ any XS modules,
41 for sad systems without a compiler.
44 - Added name and package_name XS accessors, and make sure all
45 the XS and Perl versions work the same way. (Dave Rolsky)
48 - The XS versions of various methods just returned undef when
49 called class methods, rather than dying like the pure Perl
50 versions. (Dave Rolsky)
52 0.64_07 Fri August 29, 2008
54 - Silenced warnings that managed to break Moose tests when XS
55 was loaded. (Dave Rolsky)
56 - Some XS versions of methods were ignored because of typos in
59 0.64_06 Mon August 25, 2008
61 - Another MS VC++ fix, cannot declare a variable in the middle
62 of a scope (Taro Nishino).
64 0.64_05 Sun August 24, 2008
66 - None of the dev releases actually loaded the XS properly, but
67 we silently fell back to the pure Perl version of the
71 - Replaced some code that used functions not available on Visual
72 C++ with some Perl XS API bits (Dave Rolsky).
74 0.64_04 Sat August 23, 2008
76 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
78 * pod.t and pod_coveraget.t
79 - These are no longer shipped with the tarball because of bogus
80 failures from CPAN testers. (Dave Rolsky)
82 0.64_03 Thu August 21, 2008
84 - Some (legit) code was misparsed by earlier 5.8.x
85 releases. (nothingmuch)
88 - Fix a constant in void context warning (nothingmuch)
90 0.64_02 Thu August 21, 2008
91 * Makefile.PL and Class::MOP
92 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
95 - Add missing prereqs that got lost in the switch away from
98 * Class::MOP::Instance
99 - New method - get_all_attributes (nothingmuch)
101 0.64_01 Wed August 20, 2008
103 - We now check to see if you have a compiler. If you don't, the
104 module installs without some XS bits, but will work the same
105 as with XS. This should make it easier to install on platforms
106 without a compiler (like Windows). (Dave Rolsky)
109 - Perl 6 style attribute naming replaced with sane style ('methods', not
110 '%!methods'). These changes should not impact any existing API uses.
114 - Quite a number of optimizations based on profiling, including
115 allowing constructors to take hash references instead of
116 hashes, duplicating some frequently used code in XS, and
117 making constructors immutable. These changes should not impact
118 any existing API uses. (nothingmuch)
121 - Constructors now respect the meta attributes of their subclasses,
122 facilitating MOP extensibility. More related changes will happen in the
123 next several releases. (nothingmuch)
126 - New method - get_all_methods, replaces the deprecated
127 compute_all_applicable_methods. get_all_attributes provided for
128 consistency (nothingmuch)
129 - New method - wrap_method was refactored out of get_method_map
131 - New API for meta instance invalidation - invalidate_meta_instance,
132 invalidate_meta_instances, add_dependent_meta_instance,
133 remove_dependent_meta_instance, called automatically when attribute
134 definitions change and allows notification of dependent subclasses.
137 0.64 Sun August 3, 2008
138 * Class::MOP::Immutable
139 - fixing subtle edge case in immutable when you
141 - clean up option processing (nothingmuch)
143 * Class::MOP::Instance
144 - inlined initialize slot didn't match
145 non-inlined (nothingmuch)
147 0.63 Mon July 7, 2008
149 - load_class will initialize a metaclass even if
150 the class is already loaded (sartak)
151 - load_class now returns the metaclass instance
152 instead of just 1 (sartak)
155 - better error messages (sartak and Dave Rolsky)
157 0.62 Wed June 18, 2008
158 - in is_class_loaded, recognize scalar references (as opposed to globs) in
159 the symbol table as methods (these are optimized constant subs)
161 0.61 Fri. June 13, 2008
162 - Okay, lets give this another try and see if PAUSE
163 recognizes it correct this time.
165 0.60 Thurs. Jun 12, 2008
166 - Fixed a version number issue by bumping all modules
169 0.59 Thurs. Jun 12, 2008
170 !! Several fixes resulting in yet another 25-30% speedup !!
173 - now stores the instance of the instance
174 metaclass to avoid needless recomputation
175 and deletes it when the cache is blown
176 - introduce methods to query Class::MOP::Class for
177 the options used to make it immutable as well as
178 the proper immutable transformer. (groditi)
180 * Class::MOP::Package
181 - {add, has, get, remove}_package_symbol all
182 now accept a HASH ref argument as well as the
183 string. All internal usages now use the HASH
187 - MOP.xs does sanity checks on the coderef
189 - is_class_loaded check now uses code that
190 was improved in Moose's ClassName type
192 - nonsensical (undef, empty, reference) class
193 names now throw a more direct error in
195 - tests for this and other aspects of
201 Class::MOP::Method::Wrapped
202 Class::MOP::Attribute
203 - switched usage of reftype to ref because
206 0.58 Thurs. May 29, 2008
207 (late night release engineering)--
209 - fixing the version is META.yml, no functional
210 changes in this release
212 0.57 Wed. May 28, 2008
213 !! Several speedups resulting in 20-25% speedups !!
214 || (thanks to konobi, groditi, mst & CataMoose) !!
217 - made get_method_map use list_all_package_symbols
218 instead of manually grabbing each symbol
219 - streamlining &initialize somewhat, since it gets
222 * Class::MOP::Package
223 - made {get, has}_package_symbol not call
225 - inlining a few calls to &name with
226 direct HASH access key access
227 - added get_all_package_symbols to fetch
228 a HASH of items based on a type filter
229 similar to list_all_package_symbols
230 - added tests for this
233 Class::MOP::Method::Constructor
234 Class::MOP::Method::Generated
235 Class::MOP::Method::Accessor
236 - added more descriptive error message to help
237 keep people from wasting time tracking an error
238 that is easily fixed by upgrading.
240 * Class::MOP::Immutable
241 - Don't inline a destructor unless the user actually
243 - added tests for this
245 0.56 Saturday, May 24, 2008
247 - we now get the &check_package_cache_flag
248 function from MRO::Compat
249 - All XS based functionality now has a
250 Pure Perl alternative
251 - the CLASS_MOP_NO_XS environment variable
252 can now be used to force non-XS versions
255 * Class::MOP::Attribute
256 - add has_read_method and has_write_method
257 - get_{read,write}_method_ref now wraps the
258 anon-sub ref in the method metaclass when
260 - added tests for this
262 * Class::MOP::Immutable
263 - added the ability to "wrap" methods when
264 making the class immutable
267 - now handling the edge case of ->meta->identifier
268 dying by wrapping add_package_symbol to specifically
269 allow for it to work.
270 - added tests for this
272 * Class::MOP::Attribute
274 Class::MOP::Immutable
275 - any time a method meta object is constructed
276 we make sure to pass the correct package and
277 method name information
280 Class::MOP::Method::Wrapped
281 Class::MOP::Method::Generated
282 Class::MOP::Method::Accessor
283 Class::MOP::Method::Consructor
284 - the &wrap constructor method now requires that a
285 'package_name' and 'name' attribute are passed. This
286 is to help support the no-XS version, and will
287 throw an error if these are not supplied.
288 - all these classes are now bootstrapped properly
289 and now store the package_name and name attributes
292 ~ Build.PL has been removed since the
293 Module::Install support has been removed
295 0.55 Mon. April 28, 2008
296 - All classes now have proper C3 MRO support
297 - added MRO::Compat as a dependency to allow
298 for the C3 MRO support to Just Work in all
302 - rebless_instance now returns the instance
303 it has just blessed, this is mostly to
305 - set the attr correctly in rebless_instance
306 when it has no init_arg
307 - tweaked &linear_isa and &class_precedence_list
308 to support c3 classes.
310 0.54 Fri. March, 14, 2008
313 - making sure that load_class never gets
314 passed a value from @_ or $_ to squash
315 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
318 - make_{immutable,mutable} now return 1
320 - improved error handling in ->create method
321 - rebless_instance now takes extra params which
322 will be used to populate values
323 - added tests for this
326 - localizing the Data::Dumper configurations so
327 that it does not pollute others (RT #33509)
333 Class::MOP::Attribute
334 - these classes no longer define their own ->meta,
335 but instead just inherit from Class::MOP::Object
337 * Class::MOP::Instance
338 Class::MOP::Immutable
339 - these classes now inherit from Class::MOP::Object
342 - fixed the filename length on several
343 test files so we install on VMS better
345 - fixed incorrect use of catdir when it
346 should be catfile (RT #32385)
348 0.53 Thurs. Feb. 14, 1008
349 ~~ several doc. fixes and updates ~~
352 Class::MOP::Method::Constructor
353 Class::MOP::Attribute
354 - making init_arg accept an undefined value
355 to indicate that no constructor args can
356 be passed (thanks to nothingmuch)
357 - added tests for this
358 - added attribute initializer attribute (rjbs)
361 - making this use the new init_arg => undef
362 feature instead of the silly hack from
363 before (thanks to nothingmuch)
365 0.52 Tues. Jan. 22, 2008
367 - fixed bug in rebless_instance
370 * Class::MOP::Method::Constructor
371 - removed assumptions about the existence of
374 0.51 Mon. Jan. 14, 2008
375 ~~~ some misc. doc. fixes ~~~
376 ~~ updated copyright dates ~~
379 - now sets the IS_RUNNING_ON_5_10
380 constant so that we can take advantage
381 of some of the nice bits of 5.10
384 - uses the IS_RUNNING_ON_5_10 flag to
385 optimize the &linearized_isa method
386 and avoid the hack/check for circular
387 inheritence in &class_precedence_list
388 - added rebless_instance method (Sartak)
389 - added tests for this
391 * Class::MOP::Immutable
392 - the immutable class now keeps track of
393 the transformer which immutablized it
395 * Class::MOP::Instance
396 - added rebless_instance_structure method (Sartak)
397 - added tests for this
399 0.50 Fri. Dec. 21, 2007
401 - fixed bug in immutable to make sure that
402 transformation arguments are saved
404 - added tests for this
406 * Class::MOP::Immutable
407 - fixed a bug (see above)
409 * Class::MOP::Attribute
412 0.49 Fri. Dec. 14, 2007
413 !! Class::MOP now loads 2 x faster !!
414 !! with XS speedups (thanks konobi) !!
417 - removed the dependency on B
418 - added two XS functions (thanks konobi)
419 - get_code_info($code) which replaces all
420 the B fiddling we were doing with
421 faster/leaner XS level fiddling
422 - check_package_cache_flag($pkg_name) which
423 returns the PL_sub_generation variable to
424 be used to help manage method caching.
427 In 5.10 or greater this will actually
428 use the mro::get_pkg_gen instead to give
429 even more accurate caching information.
430 blblack++ for that stuff :)
433 - added the &subclasses method (thanks rlb)
434 - added the update_package_cache_flag and
435 reset_package_cache_flag which help keep
436 track of when we need to re-fetch the
438 - Several small improvements to take advantage
439 of the new method map caching features
441 0.48 Mon. Nov. 26, 2007
442 * Class::MOP::Attribute
443 - fixed get_read/write_method to handle the
444 HASH ref case, which makes the
445 get_read/write_method_ref handle it too.
446 - added more tests for this
448 0.47 Sat. Nov. 24, 2007
449 * Class::MOP::Attribute
450 - fixed misspelling in get_write_method_ref
451 - added more tests for this
453 0.46 Fri. Nov. 23, 2007
455 - added the linearized_isa method instead of constantly
456 pruning duplicate classes (this will be even more
457 useful in the 5.10-compat version coming soon)
459 * Class::MOP::Attribute
460 - added the get_read_method_ref and get_write_method_ref
461 methods which allow you to retrieve a CODE ref which
462 can always be used to read or write an attribute.
464 0.45 Thurs. Nov. 13, 2007
465 * Class::MOP::Attribute
466 - Fix error message on confess (groditi)
468 0.44 Thurs. Nov. 13, 2007
469 - Apparently I didn't make dist correctly (groditi)
471 0.43 Thurs. Nov. 13, 2007
473 - Add support for the 'builder' attribute (groditi)
476 - optimise metaclass-already-exists check in
477 construct_class_instance (groditi)
478 - duplicate check into initialize to save a
479 call through (groditi)
481 * Class::MOP::Attribute
482 - Add support for the 'builder' attribute (groditi)
483 - Make predicates check for the existence of a value, not whether
484 it is defined (groditi)
486 * Class::MOP::Instance
487 - Make predicates check for the existence of a value, not whether
488 it is defined (groditi)
490 * Class::MOP::Method::Accessor
491 - made this a subclass of Class::MOP::Method::Generated
492 - removed the relevant attributes
494 * Class::MOP::Method::Constructor
495 - fixed the cached values we had to be more sane
496 - made this a subclass of Class::MOP::Method::Generated
497 - fixed generated constructor so it properly handles
499 - added tests for this
500 - added the option to allow for both inlined and
501 non-inlined constructors.
502 - Update inlined methods for builder and predicate changes (groditi)
504 * Class::MOP::Method::Generated
505 - added this class as an abstract base for the
506 Class::MOP::Method::{Constructor,Accessor} classes
507 - added tests for this
510 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
511 - Tests for new predicate behavior (and corrections to old tests) (groditi)
514 - Update ArrayRef based class example to work with predicate changes
516 0.42 Mon. July 16, 2007
517 !!! Horray for mst, he fixed it !!!
519 * Class::MOP::Package
520 - alter symbol table handling to deal with 5.8.x and 5.9.x
523 - Get rid of the crappy workaround from 0.40/41
525 0.41 Sun. July 15, 2007
527 Arghh!!! My TODO test didn't work, so I handle
528 it manually now so that people can use this
529 with 5.9.5/bleadperl without issue.
531 0.40 Tues, July 3, 2007
533 ~ marked a test in 003_methods.t as TODO
534 for perl 5.9.5 (this test is irrelvant to
535 the module functioning on 5.9.5 for the most
538 0.39 Mon. June 18, 2007
539 * Class::MOP::Immutable
540 - added make_metaclass_mutable + docs (groditi)
541 - removed unused variable
542 - added create_immutable_transformer
543 necessary for sane overloading of immutable behavior
544 - tests for this (groditi)
547 - Immutability can now be undone,
548 added make_mutable + tests + docs (groditi)
549 - Massive changes to the way Immutable is done
550 for details see comments next to make_immutable
551 This fixes a bug where custom metaclasses broke
552 when made immutable. We are now keeping one immutable
553 metaclass instance per metaclass instead of just one
554 to prevent isa hierarchy corruption. Memory use will go
555 up, but I suspect it will be neglible.
556 - New tests added for this behavior. (groditi)
558 0.38 Thurs. May 31, 2007
559 ~~ More documentation updates ~~
561 * Class::MOP::Package
562 - we now deal with stub methods properly
563 - added tests for this
564 - fixed some tests failing on 5.9.5 (thanks blblack)
566 * Class::MOP::Attribute
567 - added get_read_method and get_write_method
568 thanks to groditi for this code, tests
570 - added tests and POD for this
573 - fixed RT issue #27329, clone object now
574 handles undef values correctly.
575 - added tests for this
576 - Corrected anon-class handling so that they
577 will not get reaped when instances still
578 exist which need to reference them. This is
579 the correct behavior, hopefully this is an
580 obscure enough feature that there are not too
581 many work arounds out in the wild.
582 - added tests for this by groditi
583 - updated docs to explain this
586 - load custom metaclasses automatically (thanks groditi)
587 - added tests for this behavior
589 0.37 Sat. March 10, 2007
590 ~~ Many, many documentation updates ~~
593 - added &load_class and &is_class_loaded
594 - added tests and docs for these
596 * Class::MOP::Attribute
597 - default now checks the instance with defined to
598 avoid setting off bool-overloads (found by Carl Franks)
602 - bad name in a test, causing meaningless failuress.
608 - All attribute names are now consistent and follow Perl 6
609 style (prefixed with the sigil, and ! as the twigil for
610 private attrs). This should not affect any code, unless
611 you broke encapsulation, in which case, it is your problem
614 !! Class::MOP::Class::Immutable has been removed
616 * Class::MOP::Method::Constructor
617 - this has been moved out of Class::MOP::Class::Immutable
618 and is a proper subclass of Class::MOP::Method now.
621 - this module now uses Class::MOP::Immutable for the
622 immutable transformation instead of
623 Class::MOP::Class::Immutable.
625 + Class::MOP::Immutable
626 - this module now controls the transformation from a mutable
627 to an immutable version of the class. Docs for this will
628 be coming eventually.
631 0.36 Sun. Nov. 5, 2006
633 - added a few 'no warnings' lines to keep annoying
634 (and meaningless) warnings from chirping during
638 - some more bootstrapping is now done on the new
641 * Class::MOP::Class::Immutable
643 - constructor generation is now handled by
644 the Class::MOP::Method::Constructor class
646 * Class::MOP::Method::Constructor
647 - created this to handle constructor generation
648 in Class::MOP::Class::Immutable
650 * Class::MOP::Attribute
652 - attributes now delegate to the
653 Class::MOP::Method::Accessor to generate
656 * Class::MOP::Method::Accessor
657 - all accessor generation functions from
658 Class::MOP::Attribute have been moved here
660 0.35 Sat. Sept. 30, 2006
662 * scripts/class_browser.pl
663 - initial prototype of a class browser, more
664 on this to come. Comments and patches are
668 - All Class::MOP::* accessors are no longer
669 re-generated in the bootstrap, instead
670 they are aliased from the originals
671 - fixed tests to reflect
672 - added Class::MOP::Method (and its subclasses)
674 - adjusted tests for this
675 - added the Class::MOP::Instance attributes
680 - methods are no longer blessed CODE refs
681 but are actual objects which can be CODE-ified
682 - adjusted tests to compensate
683 - adjusted docs for this
686 - changed how methods are dealt with to
687 encapsulate most of the work into the
688 &get_method_map method
689 - made several adjustments for the change
690 in Class::MOP::Method
691 - &add_attribute now checks if you are adding
692 a duplicate name, and properly removes the
693 old one before installing the new one
694 - added tests for this
695 - adjusted docs for this
697 * Class::MOP::Class::Immutable
698 - added caching of &get_method_map
699 - fixed issue with &get_package_symbol
700 - cleaned up the methods that die (patch by David Wheeler)
702 * Class::MOP::Package
703 - added filtering capabilities to
704 &list_all_package_symbols
706 0.34 Sat. Aug. 26, 2006
708 - added the %:methods attribute, which like
709 the $:version and such just actually goes
710 to the symbol table to get it's stuff.
711 However, it makes the MOP more complete.
713 - The &create method now requires that all
714 but the package name now is passed in as
715 named parameters. See docs for more info.
716 - updated docs and tests for this
719 - added &dump method to easily Data::Dumper
723 - cleaned up the initialization of attributes
724 which do not store things in the instance
725 - added the %:methods attribute definition to
728 ~ lots of misc. test cleanup
730 0.33 Sat. Aug. 19, 2006
732 - moved the metaclass cache out of here
733 and it is now in Class::MOP itself.
736 - moved all the metaclass cache stuff here
737 - fixed all tests for this
739 * Class::MOP::Attribute
740 - reference values (other than CODE refs)
741 are no longer allowed for defaults
742 - added tests for this
744 * Class::MOP::Package
745 - fixed an issue with perl 5.8.1 and how it deals
746 with symbol tables. The namespace hash is now
747 always reloaded from the symbol table.
749 ~ lots of misc. documentation cleanup
751 0.32 Sat. Aug. 12, 2006
752 + added Class::MOP::Object so that the
753 metamodel is more complete (and closer
754 to what Perl 6 will probably be).
756 * Class::MOP::Package
757 - refactored entire class, this is now
758 the primary gateway between the metaclass
759 and the Perl 5 symbol table
760 - added many tests for this
761 - this class is now a subclass of
763 - added some tests to reflect this
766 - refactored all symbol table access to
767 use Class::MOP::Package methods instead
770 - adding the $:version attribute in the bootstrap
771 so that Module has a version as an attribute
772 - see comment in Class::MOP for details
773 - added the $:authority attribute to this module
774 as well as an &identifier method, to bring us
775 ever closer to Perl 6 goodness
776 - I have added $AUTHORITY to all the modules
777 - added tests for this
779 * Class::MOP::Instance
780 - added &deinitialize_slot for removing slots
782 - added tests for this
784 * Class::MOP::Attribute
785 - added support for &deinitialize_slot for removing
786 slots from an instance
787 - added tests for this
789 0.31 Sat. July 15, 2006
792 - added &find_method_by_name to locate a method
793 anywhere within the class hierarchy
795 * Class::MOP::Attribute
796 - added &set_value and &get_value for getting
797 the value of the attribute for a particular
800 0.30 Wed. July 5, 2006
801 ---------------------------------------
802 This is the first version of Class::MOP
803 to introduce the immutable features which
804 will be used for optimizating the MOP.
805 This support should still be considered
806 experimental, but moving towards stability.
807 ---------------------------------------
809 * Created Class::MOP::Class::Immutable
811 * Created the Class::MOP::Package and
812 Class::MOP::Module classes to more
813 closely conform to Perl 6's meta-model
816 - now inherits from Class::MOP::Module
817 - several methods moved to ::Module and
818 ::Package and now inherited
819 - added tests for this
821 * Class::MOP::Instance
822 - added an is_inlinable method to allow other
823 classes to check before they attempt to optimize.
824 - added an inline_create_instance to inline
825 instance creation (of course)
828 - the Class::MOP::Class::*_package_variable
829 methods are all now methods of Class::MOP::Package
830 and called *_package_symbol instead. This is
831 because they are now more general purpose symbol
832 table manipulation methods.
834 0.29_02 Thurs. June 22, 2006
835 ++ DEVELOPER RELEASE ++
837 - small change in &create so that it behaves
838 properly when inherited
839 - small fix to &clone_instance
841 0.29_01 Fri. May 12, 2006
842 ++ DEVELOPER RELEASE ++
843 - This release works in combination with
844 Moose 0.09_01, it is a developer release
845 because it introduces a new instance
846 sub-protocol and has not yet been
850 - anon-classes are now properly garbage collected
851 - added tests for this
852 - improved method modifier wrapping
854 * Class::MOP::Instance
855 - added new instance protocol
856 - added tests for this
857 - changed all relevant modules and examples
859 - Class::MOP::Attribute
863 - you no longer need to specify the metaclass
864 itself, if it is not there, Class::MOP::Class
866 - updated tests for this
869 - added ArrayBasedStorage example to show
870 instance storage using ARRAY refs instead of
872 - added tests for this
873 - InsideOutClass is totally revised using the
874 new instance protocol
875 - added more tests for this
877 0.26 Mon. April 24, 2006
879 - added find_attribute_by_name method
880 - added tests and docs for this
881 - some small optimizations
883 * Class::MOP::Attribute
884 - some small optimizations
886 0.25 Thurs. April 20, 2006
888 - added create_anon_class for creating anonymous classes
889 - added tests for this
890 - added get_all_metaclasses, get_all_metaclass_names
891 and get_all_metaclass_instances method to allow
892 access to all the cached metaclass objects.
893 - attribute slot initialization is now the responsibility
894 of the attribute itself, and construct_instance now
895 delegates appropriately
897 * Class::MOP::Attribute
898 - attribute slot initialization is now the responsibility
899 of the attribute itself, so we added a method for it
900 called initialize_instance_slot
903 - adjusted all the examples to use the new attribute
904 initialize_instance_slot method
906 0.24 Tues. April 11, 2006
908 - cleaned up how the before/after/around method
909 modifiers get named with Sub::Name
911 0.23 Thurs. March 30, 2006
913 - fixed the way attribute defaults are handled
914 during instance construction (bug found by chansen)
916 * Class::MOP::Attribute
917 - read-only accessors ('reader') will now die if
918 passed more than one argument (attempting to write
920 - added tests for this
921 - adjusted all /example files to comply
923 0.22 Mon. March 20, 2006
925 - localized $@ in the *_package_variable functions
926 because otherwise, it does ugly things in Moose.
927 - added test case for this
929 0.21 Wed. March 15, 2006
931 - fixed issue where metaclasses are reaped from
932 our cache in global destruction, and so are not
933 available in DESTORY calls
935 0.20 Thurs. March 2, 2006
936 - removed the dependency for Clone since
937 we no longer to deep-cloning by default.
940 - added &package_name, &name and
941 &fully_qualified_name methods, some of
942 which were formerly private subs in
945 * Class::MOP::Method::Wrapped
946 - allows for a method to be wrapped with
947 before, after and around modifiers
948 - added tests and docs for this feature
951 - improved &get_package_symbol
952 - &version and &superclasses now use it
953 - methods are now blessed into Class::MOP::Method
955 - added methods to install CLOS-style method modifiers
956 - &add_before_method_modifier
957 - &add_after_method_modifier
958 - &add_around_method_modifier
959 - added tests and docs for these
960 - added &find_next_method_by_name which finds the
961 equivalent of SUPER::method_name
963 0.12 Thurs. Feb 23, 2006
964 - reduced the dependency on B, no need to always
968 - added docs to the C3 method dispatch order test
969 - fixed missing Algorithm::C3 dependency by making
970 the test skip if it is not installed
972 0.11 Mon Feb. 20, 2006
974 - added example of changing method dispatch order to C3
977 - changed how clone_instance behaves, it now only does a
978 shallow clone (see docs for more details)
979 - added docs and tests
981 0.10 Tues Feb. 14, 2006
982 ** This release was mostly about writing more tests and
983 cleaning out old and dusty code, the MOP should now
984 be considered "ready to use".
986 - adding more tests to get coverage up a little higher,
987 mostly testing errors and edge cases.
988 - test coverage is now at 99%
991 - no longer optionally exports to UNIVERSAL::meta or
992 creates a custom metaclass generator, use the
993 metaclass pragma instead.
996 - fixed a number of minor issues which came up in the
997 error/edge-case tests
999 * Class::MOP::Attribute
1000 - fixed a number of minor issues which came up in the
1001 error/edge-case tests
1004 - fixing the AttributesWithHistory example, it was broken.
1006 0.06 Thurs Feb. 9, 2006
1008 - adding new metaclass pragma to make setting up the
1009 metaclass a little more straightforward
1012 - clean up bootstrapping to include more complete
1013 attribute definitions for Class::MOP::Class and
1014 Class::MOP::Attribute (accessors, readers, writers,
1015 etc.) ... it is redundant, but is useful meta-info
1019 - fixing minor meta-circularity issue with &meta, it
1020 is now more useful for subclasses
1021 - added &get_attribute_map as an accessor for the
1022 hash of attribute meta objects
1023 - &compute_all_applicable_attributes now just returns
1024 the attribute meta-object, rather than the HASH ref
1025 since all the same info can be gotten from the
1026 attribute meta-object itself
1027 - updated docs & tests to reflect
1028 - added &clone_instance method which does a deep clone
1029 of the instance structure created by &construct_instance
1030 - added docs & tests for this
1031 - added Clone as a dependency
1032 - added &new_object and &clone_object convience methods to
1033 return blessed new or cloned instances
1034 - they handle Class::MOP::Class singletons correctly too
1035 - added docs & tests for this
1036 - cleaned up the &constuct_class_instance so that it behaves
1037 more like &construct_instance (and managed the singletons too)
1038 - added the &check_metaclass_compatibility method to make sure
1039 that metaclasses are upward and downward compatible.
1040 - added tests and docs for this
1043 - adjusting code to use the &Class::MOP::Class::meta
1045 - adjusting code to use the metaclass pragma
1047 0.05 Sat Feb. 4, 2006
1049 - added the &attribute_metaclass and &method_metaclass
1050 attributes which contain a metaclass name to use for
1051 attributes/methods respectively
1054 - bootstrap additional attributes for Class::MOP::Class
1057 - adjusted the example code and tests to use the new
1058 &attribute_metaclass feature of Class::MOP::Class
1059 - added new example:
1062 0.04 Fri Feb. 3, 2006
1064 - some documentation suggestions from #perl6
1066 * Class::MOP::Attribute
1067 - improved error messages
1070 - added new examples:
1071 - AttributesWithHistory
1072 - ClassEncapsultedAttributes
1074 0.03 Fri Feb. 3, 2006
1075 - converted to Module::Build instead of EU::MM
1077 * Class::MOP::Attribute
1078 - refactored method generation code
1079 - attributes are now associated with class directly
1082 - refactored the InsideOut example to take advantage
1083 of the Class::MOP::Attribute refactoring
1084 - changed example files to .pod files and hide thier
1085 package names from PAUSE (I don't want to own these
1086 namespaces really, they are just examples)
1088 0.02 Thurs Feb. 2, 2006
1089 - moving examples from t/lib/* to examples/*
1090 - adding POD documentation to the examples
1092 0.01 Thurs Feb. 2, 2006