1 Revision history for Perl extension Class-MOP.
4 - Fixed various corner cases where is_class_loaded incorrectly
5 returned true for a class that wasn't really loaded. (Dave
9 - Add get_all_method_names (Sartak)
12 - Disable deprecated get_all_package_symbols in list context. (Florian
15 0.76 Thu, January 22, 2008
16 * Class::MOP::Method::Generated
17 - Added new private methods to support code generation, which
18 are being used by Moose and can be used by MooseX
20 - Generated methods are now generated with a #line directive
21 reflecting the source of the generated method. (nothingmuch)
24 - Clarified documentation of methods that return
25 Class::MOP::Method objects. (doy)
28 - Clarified documentation of the metaclass cache methods. (Sartak)
31 - Add test showing how the xs Class::MOP::is_class_loaded can
32 be made to operate differently to the pure perl version (t0m)
34 0.75 Wed, December 31, 2008
36 - A class that was made immutable and then mutable could end up
37 sharing an immutable transformer object
38 (Class::MOP::Immutable) with other classes, leading to all
39 sorts of odd bugs. Reported by t0m. (Dave Rolsky)
41 0.74 Tue, December 25, 2008
43 - Add an xs implementation of Class::MOP::is_class_loaded (closes
44 RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
45 - Changed internals to make prehashing of hash keys easier and less
46 error-prone. (Florian Ragwitz)
48 - Fix documentation to show that around modifiers happen on both
49 sides of the modified method. (Dave Rolsky)
51 0.73 Tue, December 16, 2008
53 - Don't use Perl_mro_meta_init. It's not part of the public perl
54 api. Fixes failures to build on Win32 (RT #41750). (Florian
56 * t/082_get_code_info.t
57 - Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
58 munger anonymous subs when under -d and so making the tests
61 0.72 Mon, December 8, 2008
63 - Pass options to _new, so subclass' attributes can be
66 - In the docs, indicate that package_name and name are required
67 when calling ->wrap (Stefan O'Rear)
69 0.71_02 Fri, December 5, 2008
70 * Class::MOP::Immutable
71 - Added a new attribute, inlined_constructor, which is true if
72 the constructor was inlined.
74 - Make get_all_package_symbols return a hash ref in scalar
75 context and deprecate calling it in list context with a
76 warning. (Florian Ragwitz)
78 - Various improvements and refactoring, making things more robust and
79 easier to maintain. (Florian Ragwitz)
81 0.71_01 Wed, December 3, 2008
83 - Add an "execute" method to invoke the body so
84 we can avoid using the coderef overload (Sartak)
85 * Class::MOP::Immutable
86 - When we memoize methods, get their results lazily
87 to remove some compile-time cost (Sartak)
88 - Small speedup from eliminating several method
91 - Some small internal tweaks to try to reduce the number of
92 times we call get_method_map when bootstrapping the MOP. This
93 might make loading Class::MOP (and Moose) a little
95 - Implemented an optional XS version of get_method_map. Mostly
96 taken from a patch by Goro Fuji (rt.cpan.org #41080), with
97 help form Florian Ragwitz. (Dave Rolsky)
98 - Make the behaviour of of get_all_package_symbols (and
99 therefore get_method_map) consistent for stub methods. Report
100 and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
102 0.71 Wed November 26, 2008
105 - Actual package creation has moved upward from
106 Class to Module so that Moose roles can share
109 0.70_01 Mon, November 19, 2008
111 - Fixes for failures with blead (Florian Ragwitz)
112 - Silenced compiler warnings (Florian Ragwitz)
114 0.70 Fri, November 14, 2008
116 - Fixed an odd corner case where the XS version of
117 get_all_package_symbols could cause a segfault. This only
118 happened with inlined constants in Perl 5.10.0 (Florian
121 0.69 Fri, November 7, 2008
122 * Class::MOP::Method::Wrapped
123 - Added introspection methods for method modifiers (Dave Rolsky)
126 0.68 Fri October 24, 2008
128 - Make load_class require by file name instead of module name.
129 This stops confusing error messages when loading '__PACKAGE__'.
131 - Add load_one_class_of function to enable you to load one of a
132 list of classes, rather than having to call load_class multiple
133 times in an eval. (t0m)
135 0.67 Tue October 14, 2008
137 - Call a method on the class after setting the superclass list
138 so that we can get Perl to detect cycles before MRO::Compat
139 spirals into an infinite loop (sartak)
140 - Reported by Schwern, [rt.cpan.org #39001]
141 - In create(), pass unused options on to initialize()
142 - added test for this
144 0.66 Sat September 20, 2008
145 !! This release has an incompatible change regarding !!
146 introspection of a class's method with Class::MOP::Class !!
149 - We (us maintainers) now run all tests with XS and then without
150 XS, which should help us catch skew between the XS/pure Perl
154 ! The alias_method method has been deprecated. It now simply
155 calls add_method instead. There is no distinction between
156 aliased methods and "real" methods.
158 This means that methods added via alias_method now show up as
159 part of the class's method list/map. This is a backwards
160 incompatible change, but seems unlikely to break any
161 code. Famous last words. (Dave Rolsky)
164 - Fixed the spelling of "compatibility", but we still have a
165 "check_metaclass_compatability" method for backwards
168 0.65 Mon September 1, 2008
169 For those not following the series of dev releases, the changes
170 from 0.64 from 0.65 can mostly be summed up as a lot performance
171 improvements by nothingmuch, including new optional XS versions of
172 some methods. Also, Class::MOP now works _without_ any XS modules,
173 for sad systems without a compiler.
176 - Added name and package_name XS accessors, and make sure all
177 the XS and Perl versions work the same way. (Dave Rolsky)
180 - The XS versions of various methods just returned undef when
181 called class methods, rather than dying like the pure Perl
182 versions. (Dave Rolsky)
184 0.64_07 Fri August 29, 2008
186 - Silenced warnings that managed to break Moose tests when XS
187 was loaded. (Dave Rolsky)
188 - Some XS versions of methods were ignored because of typos in
189 MOP.xs. (Dave Rolsky)
191 0.64_06 Mon August 25, 2008
192 * Class::MOP (MOP.xs)
193 - Another MS VC++ fix, cannot declare a variable in the middle
194 of a scope (Taro Nishino).
196 0.64_05 Sun August 24, 2008
198 - None of the dev releases actually loaded the XS properly, but
199 we silently fell back to the pure Perl version of the
202 * Class::MOP (MOP.xs)
203 - Replaced some code that used functions not available on Visual
204 C++ with some Perl XS API bits (Dave Rolsky).
206 0.64_04 Sat August 23, 2008
208 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
210 * pod.t and pod_coveraget.t
211 - These are no longer shipped with the tarball because of bogus
212 failures from CPAN testers. (Dave Rolsky)
214 0.64_03 Thu August 21, 2008
215 * Class::MOP::Package
216 - Some (legit) code was misparsed by earlier 5.8.x
217 releases. (nothingmuch)
220 - Fix a constant in void context warning (nothingmuch)
222 0.64_02 Thu August 21, 2008
223 * Makefile.PL and Class::MOP
224 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
227 - Add missing prereqs that got lost in the switch away from
230 * Class::MOP::Instance
231 - New method - get_all_attributes (nothingmuch)
233 0.64_01 Wed August 20, 2008
235 - We now check to see if you have a compiler. If you don't, the
236 module installs without some XS bits, but will work the same
237 as with XS. This should make it easier to install on platforms
238 without a compiler (like Windows). (Dave Rolsky)
241 - Perl 6 style attribute naming replaced with sane style ('methods', not
242 '%!methods'). These changes should not impact any existing API uses.
246 - Quite a number of optimizations based on profiling, including
247 allowing constructors to take hash references instead of
248 hashes, duplicating some frequently used code in XS, and
249 making constructors immutable. These changes should not impact
250 any existing API uses. (nothingmuch)
253 - Constructors now respect the meta attributes of their subclasses,
254 facilitating MOP extensibility. More related changes will happen in the
255 next several releases. (nothingmuch)
258 - New method - get_all_methods, replaces the deprecated
259 compute_all_applicable_methods. get_all_attributes provided for
260 consistency (nothingmuch)
261 - New method - wrap_method was refactored out of get_method_map
263 - New API for meta instance invalidation - invalidate_meta_instance,
264 invalidate_meta_instances, add_dependent_meta_instance,
265 remove_dependent_meta_instance, called automatically when attribute
266 definitions change and allows notification of dependent subclasses.
269 0.64 Sun August 3, 2008
270 * Class::MOP::Immutable
271 - fixing subtle edge case in immutable when you
273 - clean up option processing (nothingmuch)
275 * Class::MOP::Instance
276 - inlined initialize slot didn't match
277 non-inlined (nothingmuch)
279 0.63 Mon July 7, 2008
281 - load_class will initialize a metaclass even if
282 the class is already loaded (sartak)
283 - load_class now returns the metaclass instance
284 instead of just 1 (sartak)
287 - better error messages (sartak and Dave Rolsky)
289 0.62 Wed June 18, 2008
290 - in is_class_loaded, recognize scalar references (as opposed to globs) in
291 the symbol table as methods (these are optimized constant subs)
293 0.61 Fri. June 13, 2008
294 - Okay, lets give this another try and see if PAUSE
295 recognizes it correct this time.
297 0.60 Thurs. Jun 12, 2008
298 - Fixed a version number issue by bumping all modules
301 0.59 Thurs. Jun 12, 2008
302 !! Several fixes resulting in yet another 25-30% speedup !!
305 - now stores the instance of the instance
306 metaclass to avoid needless recomputation
307 and deletes it when the cache is blown
308 - introduce methods to query Class::MOP::Class for
309 the options used to make it immutable as well as
310 the proper immutable transformer. (groditi)
312 * Class::MOP::Package
313 - {add, has, get, remove}_package_symbol all
314 now accept a HASH ref argument as well as the
315 string. All internal usages now use the HASH
319 - MOP.xs does sanity checks on the coderef
321 - is_class_loaded check now uses code that
322 was improved in Moose's ClassName type
324 - nonsensical (undef, empty, reference) class
325 names now throw a more direct error in
327 - tests for this and other aspects of
333 Class::MOP::Method::Wrapped
334 Class::MOP::Attribute
335 - switched usage of reftype to ref because
338 0.58 Thurs. May 29, 2008
339 (late night release engineering)--
341 - fixing the version is META.yml, no functional
342 changes in this release
344 0.57 Wed. May 28, 2008
345 !! Several speedups resulting in 20-25% speedups !!
346 || (thanks to konobi, groditi, mst & CataMoose) !!
349 - made get_method_map use list_all_package_symbols
350 instead of manually grabbing each symbol
351 - streamlining &initialize somewhat, since it gets
354 * Class::MOP::Package
355 - made {get, has}_package_symbol not call
357 - inlining a few calls to &name with
358 direct HASH access key access
359 - added get_all_package_symbols to fetch
360 a HASH of items based on a type filter
361 similar to list_all_package_symbols
362 - added tests for this
365 Class::MOP::Method::Constructor
366 Class::MOP::Method::Generated
367 Class::MOP::Method::Accessor
368 - added more descriptive error message to help
369 keep people from wasting time tracking an error
370 that is easily fixed by upgrading.
372 * Class::MOP::Immutable
373 - Don't inline a destructor unless the user actually
375 - added tests for this
377 0.56 Saturday, May 24, 2008
379 - we now get the &check_package_cache_flag
380 function from MRO::Compat
381 - All XS based functionality now has a
382 Pure Perl alternative
383 - the CLASS_MOP_NO_XS environment variable
384 can now be used to force non-XS versions
387 * Class::MOP::Attribute
388 - add has_read_method and has_write_method
389 - get_{read,write}_method_ref now wraps the
390 anon-sub ref in the method metaclass when
392 - added tests for this
394 * Class::MOP::Immutable
395 - added the ability to "wrap" methods when
396 making the class immutable
399 - now handling the edge case of ->meta->identifier
400 dying by wrapping add_package_symbol to specifically
401 allow for it to work.
402 - added tests for this
404 * Class::MOP::Attribute
406 Class::MOP::Immutable
407 - any time a method meta object is constructed
408 we make sure to pass the correct package and
409 method name information
412 Class::MOP::Method::Wrapped
413 Class::MOP::Method::Generated
414 Class::MOP::Method::Accessor
415 Class::MOP::Method::Consructor
416 - the &wrap constructor method now requires that a
417 'package_name' and 'name' attribute are passed. This
418 is to help support the no-XS version, and will
419 throw an error if these are not supplied.
420 - all these classes are now bootstrapped properly
421 and now store the package_name and name attributes
424 ~ Build.PL has been removed since the
425 Module::Install support has been removed
427 0.55 Mon. April 28, 2008
428 - All classes now have proper C3 MRO support
429 - added MRO::Compat as a dependency to allow
430 for the C3 MRO support to Just Work in all
434 - rebless_instance now returns the instance
435 it has just blessed, this is mostly to
437 - set the attr correctly in rebless_instance
438 when it has no init_arg
439 - tweaked &linear_isa and &class_precedence_list
440 to support c3 classes.
442 0.54 Fri. March, 14, 2008
445 - making sure that load_class never gets
446 passed a value from @_ or $_ to squash
447 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
450 - make_{immutable,mutable} now return 1
452 - improved error handling in ->create method
453 - rebless_instance now takes extra params which
454 will be used to populate values
455 - added tests for this
458 - localizing the Data::Dumper configurations so
459 that it does not pollute others (RT #33509)
465 Class::MOP::Attribute
466 - these classes no longer define their own ->meta,
467 but instead just inherit from Class::MOP::Object
469 * Class::MOP::Instance
470 Class::MOP::Immutable
471 - these classes now inherit from Class::MOP::Object
474 - fixed the filename length on several
475 test files so we install on VMS better
477 - fixed incorrect use of catdir when it
478 should be catfile (RT #32385)
480 0.53 Thurs. Feb. 14, 1008
481 ~~ several doc. fixes and updates ~~
484 Class::MOP::Method::Constructor
485 Class::MOP::Attribute
486 - making init_arg accept an undefined value
487 to indicate that no constructor args can
488 be passed (thanks to nothingmuch)
489 - added tests for this
490 - added attribute initializer attribute (rjbs)
493 - making this use the new init_arg => undef
494 feature instead of the silly hack from
495 before (thanks to nothingmuch)
497 0.52 Tues. Jan. 22, 2008
499 - fixed bug in rebless_instance
502 * Class::MOP::Method::Constructor
503 - removed assumptions about the existence of
506 0.51 Mon. Jan. 14, 2008
507 ~~~ some misc. doc. fixes ~~~
508 ~~ updated copyright dates ~~
511 - now sets the IS_RUNNING_ON_5_10
512 constant so that we can take advantage
513 of some of the nice bits of 5.10
516 - uses the IS_RUNNING_ON_5_10 flag to
517 optimize the &linearized_isa method
518 and avoid the hack/check for circular
519 inheritence in &class_precedence_list
520 - added rebless_instance method (Sartak)
521 - added tests for this
523 * Class::MOP::Immutable
524 - the immutable class now keeps track of
525 the transformer which immutablized it
527 * Class::MOP::Instance
528 - added rebless_instance_structure method (Sartak)
529 - added tests for this
531 0.50 Fri. Dec. 21, 2007
533 - fixed bug in immutable to make sure that
534 transformation arguments are saved
536 - added tests for this
538 * Class::MOP::Immutable
539 - fixed a bug (see above)
541 * Class::MOP::Attribute
544 0.49 Fri. Dec. 14, 2007
545 !! Class::MOP now loads 2 x faster !!
546 !! with XS speedups (thanks konobi) !!
549 - removed the dependency on B
550 - added two XS functions (thanks konobi)
551 - get_code_info($code) which replaces all
552 the B fiddling we were doing with
553 faster/leaner XS level fiddling
554 - check_package_cache_flag($pkg_name) which
555 returns the PL_sub_generation variable to
556 be used to help manage method caching.
559 In 5.10 or greater this will actually
560 use the mro::get_pkg_gen instead to give
561 even more accurate caching information.
562 blblack++ for that stuff :)
565 - added the &subclasses method (thanks rlb)
566 - added the update_package_cache_flag and
567 reset_package_cache_flag which help keep
568 track of when we need to re-fetch the
570 - Several small improvements to take advantage
571 of the new method map caching features
573 0.48 Mon. Nov. 26, 2007
574 * Class::MOP::Attribute
575 - fixed get_read/write_method to handle the
576 HASH ref case, which makes the
577 get_read/write_method_ref handle it too.
578 - added more tests for this
580 0.47 Sat. Nov. 24, 2007
581 * Class::MOP::Attribute
582 - fixed misspelling in get_write_method_ref
583 - added more tests for this
585 0.46 Fri. Nov. 23, 2007
587 - added the linearized_isa method instead of constantly
588 pruning duplicate classes (this will be even more
589 useful in the 5.10-compat version coming soon)
591 * Class::MOP::Attribute
592 - added the get_read_method_ref and get_write_method_ref
593 methods which allow you to retrieve a CODE ref which
594 can always be used to read or write an attribute.
596 0.45 Thurs. Nov. 13, 2007
597 * Class::MOP::Attribute
598 - Fix error message on confess (groditi)
600 0.44 Thurs. Nov. 13, 2007
601 - Apparently I didn't make dist correctly (groditi)
603 0.43 Thurs. Nov. 13, 2007
605 - Add support for the 'builder' attribute (groditi)
608 - optimise metaclass-already-exists check in
609 construct_class_instance (groditi)
610 - duplicate check into initialize to save a
611 call through (groditi)
613 * Class::MOP::Attribute
614 - Add support for the 'builder' attribute (groditi)
615 - Make predicates check for the existence of a value, not whether
616 it is defined (groditi)
618 * Class::MOP::Instance
619 - Make predicates check for the existence of a value, not whether
620 it is defined (groditi)
622 * Class::MOP::Method::Accessor
623 - made this a subclass of Class::MOP::Method::Generated
624 - removed the relevant attributes
626 * Class::MOP::Method::Constructor
627 - fixed the cached values we had to be more sane
628 - made this a subclass of Class::MOP::Method::Generated
629 - fixed generated constructor so it properly handles
631 - added tests for this
632 - added the option to allow for both inlined and
633 non-inlined constructors.
634 - Update inlined methods for builder and predicate changes (groditi)
636 * Class::MOP::Method::Generated
637 - added this class as an abstract base for the
638 Class::MOP::Method::{Constructor,Accessor} classes
639 - added tests for this
642 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
643 - Tests for new predicate behavior (and corrections to old tests) (groditi)
646 - Update ArrayRef based class example to work with predicate changes
648 0.42 Mon. July 16, 2007
649 !!! Horray for mst, he fixed it !!!
651 * Class::MOP::Package
652 - alter symbol table handling to deal with 5.8.x and 5.9.x
655 - Get rid of the crappy workaround from 0.40/41
657 0.41 Sun. July 15, 2007
659 Arghh!!! My TODO test didn't work, so I handle
660 it manually now so that people can use this
661 with 5.9.5/bleadperl without issue.
663 0.40 Tues, July 3, 2007
665 ~ marked a test in 003_methods.t as TODO
666 for perl 5.9.5 (this test is irrelvant to
667 the module functioning on 5.9.5 for the most
670 0.39 Mon. June 18, 2007
671 * Class::MOP::Immutable
672 - added make_metaclass_mutable + docs (groditi)
673 - removed unused variable
674 - added create_immutable_transformer
675 necessary for sane overloading of immutable behavior
676 - tests for this (groditi)
679 - Immutability can now be undone,
680 added make_mutable + tests + docs (groditi)
681 - Massive changes to the way Immutable is done
682 for details see comments next to make_immutable
683 This fixes a bug where custom metaclasses broke
684 when made immutable. We are now keeping one immutable
685 metaclass instance per metaclass instead of just one
686 to prevent isa hierarchy corruption. Memory use will go
687 up, but I suspect it will be neglible.
688 - New tests added for this behavior. (groditi)
690 0.38 Thurs. May 31, 2007
691 ~~ More documentation updates ~~
693 * Class::MOP::Package
694 - we now deal with stub methods properly
695 - added tests for this
696 - fixed some tests failing on 5.9.5 (thanks blblack)
698 * Class::MOP::Attribute
699 - added get_read_method and get_write_method
700 thanks to groditi for this code, tests
702 - added tests and POD for this
705 - fixed RT issue #27329, clone object now
706 handles undef values correctly.
707 - added tests for this
708 - Corrected anon-class handling so that they
709 will not get reaped when instances still
710 exist which need to reference them. This is
711 the correct behavior, hopefully this is an
712 obscure enough feature that there are not too
713 many work arounds out in the wild.
714 - added tests for this by groditi
715 - updated docs to explain this
718 - load custom metaclasses automatically (thanks groditi)
719 - added tests for this behavior
721 0.37 Sat. March 10, 2007
722 ~~ Many, many documentation updates ~~
725 - added &load_class and &is_class_loaded
726 - added tests and docs for these
728 * Class::MOP::Attribute
729 - default now checks the instance with defined to
730 avoid setting off bool-overloads (found by Carl Franks)
734 - bad name in a test, causing meaningless failuress.
740 - All attribute names are now consistent and follow Perl 6
741 style (prefixed with the sigil, and ! as the twigil for
742 private attrs). This should not affect any code, unless
743 you broke encapsulation, in which case, it is your problem
746 !! Class::MOP::Class::Immutable has been removed
748 * Class::MOP::Method::Constructor
749 - this has been moved out of Class::MOP::Class::Immutable
750 and is a proper subclass of Class::MOP::Method now.
753 - this module now uses Class::MOP::Immutable for the
754 immutable transformation instead of
755 Class::MOP::Class::Immutable.
757 + Class::MOP::Immutable
758 - this module now controls the transformation from a mutable
759 to an immutable version of the class. Docs for this will
760 be coming eventually.
763 0.36 Sun. Nov. 5, 2006
765 - added a few 'no warnings' lines to keep annoying
766 (and meaningless) warnings from chirping during
770 - some more bootstrapping is now done on the new
773 * Class::MOP::Class::Immutable
775 - constructor generation is now handled by
776 the Class::MOP::Method::Constructor class
778 * Class::MOP::Method::Constructor
779 - created this to handle constructor generation
780 in Class::MOP::Class::Immutable
782 * Class::MOP::Attribute
784 - attributes now delegate to the
785 Class::MOP::Method::Accessor to generate
788 * Class::MOP::Method::Accessor
789 - all accessor generation functions from
790 Class::MOP::Attribute have been moved here
792 0.35 Sat. Sept. 30, 2006
794 * scripts/class_browser.pl
795 - initial prototype of a class browser, more
796 on this to come. Comments and patches are
800 - All Class::MOP::* accessors are no longer
801 re-generated in the bootstrap, instead
802 they are aliased from the originals
803 - fixed tests to reflect
804 - added Class::MOP::Method (and its subclasses)
806 - adjusted tests for this
807 - added the Class::MOP::Instance attributes
812 - methods are no longer blessed CODE refs
813 but are actual objects which can be CODE-ified
814 - adjusted tests to compensate
815 - adjusted docs for this
818 - changed how methods are dealt with to
819 encapsulate most of the work into the
820 &get_method_map method
821 - made several adjustments for the change
822 in Class::MOP::Method
823 - &add_attribute now checks if you are adding
824 a duplicate name, and properly removes the
825 old one before installing the new one
826 - added tests for this
827 - adjusted docs for this
829 * Class::MOP::Class::Immutable
830 - added caching of &get_method_map
831 - fixed issue with &get_package_symbol
832 - cleaned up the methods that die (patch by David Wheeler)
834 * Class::MOP::Package
835 - added filtering capabilities to
836 &list_all_package_symbols
838 0.34 Sat. Aug. 26, 2006
840 - added the %:methods attribute, which like
841 the $:version and such just actually goes
842 to the symbol table to get it's stuff.
843 However, it makes the MOP more complete.
845 - The &create method now requires that all
846 but the package name now is passed in as
847 named parameters. See docs for more info.
848 - updated docs and tests for this
851 - added &dump method to easily Data::Dumper
855 - cleaned up the initialization of attributes
856 which do not store things in the instance
857 - added the %:methods attribute definition to
860 ~ lots of misc. test cleanup
862 0.33 Sat. Aug. 19, 2006
864 - moved the metaclass cache out of here
865 and it is now in Class::MOP itself.
868 - moved all the metaclass cache stuff here
869 - fixed all tests for this
871 * Class::MOP::Attribute
872 - reference values (other than CODE refs)
873 are no longer allowed for defaults
874 - added tests for this
876 * Class::MOP::Package
877 - fixed an issue with perl 5.8.1 and how it deals
878 with symbol tables. The namespace hash is now
879 always reloaded from the symbol table.
881 ~ lots of misc. documentation cleanup
883 0.32 Sat. Aug. 12, 2006
884 + added Class::MOP::Object so that the
885 metamodel is more complete (and closer
886 to what Perl 6 will probably be).
888 * Class::MOP::Package
889 - refactored entire class, this is now
890 the primary gateway between the metaclass
891 and the Perl 5 symbol table
892 - added many tests for this
893 - this class is now a subclass of
895 - added some tests to reflect this
898 - refactored all symbol table access to
899 use Class::MOP::Package methods instead
902 - adding the $:version attribute in the bootstrap
903 so that Module has a version as an attribute
904 - see comment in Class::MOP for details
905 - added the $:authority attribute to this module
906 as well as an &identifier method, to bring us
907 ever closer to Perl 6 goodness
908 - I have added $AUTHORITY to all the modules
909 - added tests for this
911 * Class::MOP::Instance
912 - added &deinitialize_slot for removing slots
914 - added tests for this
916 * Class::MOP::Attribute
917 - added support for &deinitialize_slot for removing
918 slots from an instance
919 - added tests for this
921 0.31 Sat. July 15, 2006
924 - added &find_method_by_name to locate a method
925 anywhere within the class hierarchy
927 * Class::MOP::Attribute
928 - added &set_value and &get_value for getting
929 the value of the attribute for a particular
932 0.30 Wed. July 5, 2006
933 ---------------------------------------
934 This is the first version of Class::MOP
935 to introduce the immutable features which
936 will be used for optimizating the MOP.
937 This support should still be considered
938 experimental, but moving towards stability.
939 ---------------------------------------
941 * Created Class::MOP::Class::Immutable
943 * Created the Class::MOP::Package and
944 Class::MOP::Module classes to more
945 closely conform to Perl 6's meta-model
948 - now inherits from Class::MOP::Module
949 - several methods moved to ::Module and
950 ::Package and now inherited
951 - added tests for this
953 * Class::MOP::Instance
954 - added an is_inlinable method to allow other
955 classes to check before they attempt to optimize.
956 - added an inline_create_instance to inline
957 instance creation (of course)
960 - the Class::MOP::Class::*_package_variable
961 methods are all now methods of Class::MOP::Package
962 and called *_package_symbol instead. This is
963 because they are now more general purpose symbol
964 table manipulation methods.
966 0.29_02 Thurs. June 22, 2006
967 ++ DEVELOPER RELEASE ++
969 - small change in &create so that it behaves
970 properly when inherited
971 - small fix to &clone_instance
973 0.29_01 Fri. May 12, 2006
974 ++ DEVELOPER RELEASE ++
975 - This release works in combination with
976 Moose 0.09_01, it is a developer release
977 because it introduces a new instance
978 sub-protocol and has not yet been
982 - anon-classes are now properly garbage collected
983 - added tests for this
984 - improved method modifier wrapping
986 * Class::MOP::Instance
987 - added new instance protocol
988 - added tests for this
989 - changed all relevant modules and examples
991 - Class::MOP::Attribute
995 - you no longer need to specify the metaclass
996 itself, if it is not there, Class::MOP::Class
998 - updated tests for this
1001 - added ArrayBasedStorage example to show
1002 instance storage using ARRAY refs instead of
1004 - added tests for this
1005 - InsideOutClass is totally revised using the
1006 new instance protocol
1007 - added more tests for this
1009 0.26 Mon. April 24, 2006
1011 - added find_attribute_by_name method
1012 - added tests and docs for this
1013 - some small optimizations
1015 * Class::MOP::Attribute
1016 - some small optimizations
1018 0.25 Thurs. April 20, 2006
1020 - added create_anon_class for creating anonymous classes
1021 - added tests for this
1022 - added get_all_metaclasses, get_all_metaclass_names
1023 and get_all_metaclass_instances method to allow
1024 access to all the cached metaclass objects.
1025 - attribute slot initialization is now the responsibility
1026 of the attribute itself, and construct_instance now
1027 delegates appropriately
1029 * Class::MOP::Attribute
1030 - attribute slot initialization is now the responsibility
1031 of the attribute itself, so we added a method for it
1032 called initialize_instance_slot
1035 - adjusted all the examples to use the new attribute
1036 initialize_instance_slot method
1038 0.24 Tues. April 11, 2006
1040 - cleaned up how the before/after/around method
1041 modifiers get named with Sub::Name
1043 0.23 Thurs. March 30, 2006
1045 - fixed the way attribute defaults are handled
1046 during instance construction (bug found by chansen)
1048 * Class::MOP::Attribute
1049 - read-only accessors ('reader') will now die if
1050 passed more than one argument (attempting to write
1052 - added tests for this
1053 - adjusted all /example files to comply
1055 0.22 Mon. March 20, 2006
1057 - localized $@ in the *_package_variable functions
1058 because otherwise, it does ugly things in Moose.
1059 - added test case for this
1061 0.21 Wed. March 15, 2006
1063 - fixed issue where metaclasses are reaped from
1064 our cache in global destruction, and so are not
1065 available in DESTORY calls
1067 0.20 Thurs. March 2, 2006
1068 - removed the dependency for Clone since
1069 we no longer to deep-cloning by default.
1071 * Class::MOP::Method
1072 - added &package_name, &name and
1073 &fully_qualified_name methods, some of
1074 which were formerly private subs in
1077 * Class::MOP::Method::Wrapped
1078 - allows for a method to be wrapped with
1079 before, after and around modifiers
1080 - added tests and docs for this feature
1083 - improved &get_package_symbol
1084 - &version and &superclasses now use it
1085 - methods are now blessed into Class::MOP::Method
1087 - added methods to install CLOS-style method modifiers
1088 - &add_before_method_modifier
1089 - &add_after_method_modifier
1090 - &add_around_method_modifier
1091 - added tests and docs for these
1092 - added &find_next_method_by_name which finds the
1093 equivalent of SUPER::method_name
1095 0.12 Thurs. Feb 23, 2006
1096 - reduced the dependency on B, no need to always
1100 - added docs to the C3 method dispatch order test
1101 - fixed missing Algorithm::C3 dependency by making
1102 the test skip if it is not installed
1104 0.11 Mon Feb. 20, 2006
1106 - added example of changing method dispatch order to C3
1109 - changed how clone_instance behaves, it now only does a
1110 shallow clone (see docs for more details)
1111 - added docs and tests
1113 0.10 Tues Feb. 14, 2006
1114 ** This release was mostly about writing more tests and
1115 cleaning out old and dusty code, the MOP should now
1116 be considered "ready to use".
1118 - adding more tests to get coverage up a little higher,
1119 mostly testing errors and edge cases.
1120 - test coverage is now at 99%
1123 - no longer optionally exports to UNIVERSAL::meta or
1124 creates a custom metaclass generator, use the
1125 metaclass pragma instead.
1128 - fixed a number of minor issues which came up in the
1129 error/edge-case tests
1131 * Class::MOP::Attribute
1132 - fixed a number of minor issues which came up in the
1133 error/edge-case tests
1136 - fixing the AttributesWithHistory example, it was broken.
1138 0.06 Thurs Feb. 9, 2006
1140 - adding new metaclass pragma to make setting up the
1141 metaclass a little more straightforward
1144 - clean up bootstrapping to include more complete
1145 attribute definitions for Class::MOP::Class and
1146 Class::MOP::Attribute (accessors, readers, writers,
1147 etc.) ... it is redundant, but is useful meta-info
1151 - fixing minor meta-circularity issue with &meta, it
1152 is now more useful for subclasses
1153 - added &get_attribute_map as an accessor for the
1154 hash of attribute meta objects
1155 - &compute_all_applicable_attributes now just returns
1156 the attribute meta-object, rather than the HASH ref
1157 since all the same info can be gotten from the
1158 attribute meta-object itself
1159 - updated docs & tests to reflect
1160 - added &clone_instance method which does a deep clone
1161 of the instance structure created by &construct_instance
1162 - added docs & tests for this
1163 - added Clone as a dependency
1164 - added &new_object and &clone_object convience methods to
1165 return blessed new or cloned instances
1166 - they handle Class::MOP::Class singletons correctly too
1167 - added docs & tests for this
1168 - cleaned up the &constuct_class_instance so that it behaves
1169 more like &construct_instance (and managed the singletons too)
1170 - added the &check_metaclass_compatibility method to make sure
1171 that metaclasses are upward and downward compatible.
1172 - added tests and docs for this
1175 - adjusting code to use the &Class::MOP::Class::meta
1177 - adjusting code to use the metaclass pragma
1179 0.05 Sat Feb. 4, 2006
1181 - added the &attribute_metaclass and &method_metaclass
1182 attributes which contain a metaclass name to use for
1183 attributes/methods respectively
1186 - bootstrap additional attributes for Class::MOP::Class
1189 - adjusted the example code and tests to use the new
1190 &attribute_metaclass feature of Class::MOP::Class
1191 - added new example:
1194 0.04 Fri Feb. 3, 2006
1196 - some documentation suggestions from #perl6
1198 * Class::MOP::Attribute
1199 - improved error messages
1202 - added new examples:
1203 - AttributesWithHistory
1204 - ClassEncapsultedAttributes
1206 0.03 Fri Feb. 3, 2006
1207 - converted to Module::Build instead of EU::MM
1209 * Class::MOP::Attribute
1210 - refactored method generation code
1211 - attributes are now associated with class directly
1214 - refactored the InsideOut example to take advantage
1215 of the Class::MOP::Attribute refactoring
1216 - changed example files to .pod files and hide thier
1217 package names from PAUSE (I don't want to own these
1218 namespaces really, they are just examples)
1220 0.02 Thurs Feb. 2, 2006
1221 - moving examples from t/lib/* to examples/*
1222 - adding POD documentation to the examples
1224 0.01 Thurs Feb. 2, 2006