X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Changes;h=f8801ebd761bf523f63b3d222a6ede596e055dc3;hb=HEAD;hp=484db6c0bb0fdd37c9339c5ad05f45c771b2221a;hpb=a79939dd6029da1170ea03e0ff69bbf71f8605b8;p=gitmo%2FClass-MOP.git diff --git a/Changes b/Changes index 484db6c..f8801eb 100644 --- a/Changes +++ b/Changes @@ -1,19 +1,286 @@ Revision history for Perl extension Class-MOP. -0.90 +NEXT + + [API CHANGES] + + * The internal code used to generate inlined methods (accessor, constructor, + etc.) has been massively rewritten. MooseX modules that do inlining will + almost certainly need to be updated as well. + + [ENHANCEMENTS] + + * A lot of code related to managing methods for a class has been tweaked to + make it faster. This speeds up compilation time for Class::MOP and Moose, + as well modules which use Moose. + +1.12 Mon, Jan 3, 2011 + + * Remove usage of undocumented Package::Stash APIs from the tests. This + prevents the tests from failing on Package::Stash >= 0.18. + +1.11 Sun, Oct 31, 2010 + + [ENHANCEMENTS] + + * Replace use of Test::Exception with Test::Fatal. (Karen Etheridge and Dave + Rolsky) + +1.10 Mon, Oct 18, 2010 + + [BUG FIXES] + + * Lots of fixes for edge cases with anon classes. (doy) + +1.09 Tue, Oct 5, 2010 + + [ENHANCEMENTS] + + * It's now possible to tell Class::MOP::Class->create and the metaclass + pragma to not install a 'meta' method into classes they manipulate, + or to install one under a different name. (doy) + + * Reinitializing a metaclass no longer removes the existing method and + attribute objects (it instead fixes them so they are correct for the + reinitialized metaclass). (doy) + + * All 'meta' methods created by Class::MOP are now of the class + Class::MOP::Method::Meta. This is overridable at the metaclass layer. (doy) + + [OTHER] + + * Use get_or_add_package_symbol when we intend for it to autovivify, in + preparation for changes in Package::Stash. (doy) + + * We now use Module::Install::AuthorRequires to force authors to run all + tests, just like we do for Moose. (sartak) + +1.08 Mon, Sep 13, 2010 + + [BUG FIXES] + + * The get_method_list and _get_local_methods methods blew up in the face + of subroutine stubs. (Goro Fuji) + +1.07 Tue, Aug 25, 2010 + + [BUG FIXES] + + * Fix a mysterious error reported by Piers Cawley. The error showed up as + "Can't use an undefined value as a symbol reference at + /usr/local/lib/perl/5.10.1/Class/MOP/Mixin/HasMethods.pm line 167." (Dave + Rolsky) + +1.06 Sun, Aug 23, 2010 + + [BUG FIXES] + + * Version 1.05 no longer reported constants as methods, except with Perl + 5.8.x, and doing so in 5.8.x caused test failures. Constants are now + _expected_ to be reported as methods, and we explicitly test this. (Dave + Rolsky) + +1.05 Sun, Aug 22, 2010 + + [ENHANCEMENTS] + + * Refactorings and improvements to how defaults are handled, particularly + for inlined code (doy). + + * Optimizations that should help speed up compilation time (Dave Rolsky). + +1.04 Tue, Jul 25, 2010 + + [ENHANCEMENTS] + + * Class::MOP::Deprecated now uses Package::DeprecationManager + internally. Deprecation warnings are now only issued once for each calling + package, which cuts down on noise. When importing Class::MOP::Deprecated, + the request API version should now be passed in the "-api_version" + flag. However, the old "-compatible" flag will continue to work. (Dave + Rolsky) + +1.03 Sat, Jun 5, 2010 + + [ENHANCEMENTS] + + * Make CMOP::Package a thin wrapper around Package::Stash (doy). + +1.02 Thu, May 20, 2010 + + [API CHANGES] + + * Packages and modules no longer have methods - this functionality was + moved back up into Class::MOP::Class (doy). + + [ENHANCEMENTS] + + * Metaclass incompatibility checking now checks all metaclass types. (doy) + + * Class::MOP can now do simple metaclass incompatibility fixing: if your + class's metaclass is a subclass of your parent class's metaclass, it will + just use the parent class's metaclass directly. (doy) + +1.01 Thu, May 6, 2010 + + [NEW FEATURES] + + * is_class_loaded, load_class and load_first_existing_class now allow + specifying a minimum required version (Florian Ragwitz). + + [BUG FIXES] + + * The __INSTANCE__ parameter to Class::MOP::Class::new_object now enforces + that the passed in reference is blessed into the correct class (by dying if + it's not) (doy, jhallock). + +1.00 Thu, Mar 25, 2010 + + [GRRR< FUCKING STEVAN@] + + * Re-release 0.99 as 1.00. + +0.99 Thu, Mar 25, 2010 + + [DOCUMENTATION] + + * Fix typo in Class::MOP::Attribute (Franck Cuny). + +0.98 Mon, Jan 18, 2010 + + [ENHANCEMENTS] + + * Added Class::MOP::Class->rebless_instance_back, which does the inverse of + rebless_instance (doy, rafl). + +0.97_01 Mon, Jan 4, 2010 + + [ENHANCEMENTS] + + * Internal refactorings to move shared behavior into new "mixin" classes. This + made adding some new features to Moose much easier. (Dave Rolsky) + +0.97 Fri, Dec 18, 2009 + * No code changes, just packaging fixes to make this distro installable. + +0.96 Fri, Dec 18, 2009 + * tests + - Fixed t/082_get_code_info.t so it passes with bleadperl. (Dave Rolsky) + - Add XS & C files to no tabs check (Dave Rolsky) + - Convert all tests to done_testing. (Florian Ragwitz) + +0.95 Wed, Nov 19, 2009 + * Class::MOP + - Make is_class_loaded without any arguments fail loudly + (Florian Ragwitz). + - Make load_class throw more standard error messages when loading single + modules (nothingmuch). + + * Class::MOP::Package + - Stop add_method from behaving differently under the debugger + (Florian Ragwitz). + + * Class::MOP::Class + * Class::MOP::Package + - Any method which takes a method name as an argument now allows names + which are false (like "0"), but the name must be defined and not be an + empty string. (Dave Rolsky) + + * Class::MOP::Class + - Deprecated get_attribute_map as a public method. You can use a + combination of get_attribute_list and get_attribute instead. (Dave + Rolsky) + +0.94 Tue, Sep 22, 2009 + * Class::MOP::Attribute + - Introduce set_raw_value and get_raw_value, side effect free variants + of {get,set}_value. These don't do anything useful in Class::MOP but + have different behavior that set_value and get_value for Moose + attributes. (nothingmuch) + +0.93 Tue, Sep 15, 2009 + * Class::MOP + - The load_class function just returns true, since it's return value was + confusing (either a metaclass object or a class name). It either loads + a class or dies trying. In the future, this may change to not return + anything, since there's no point in checking its return + value. Addresses RT #45883. (Dave Rolsky) + + * Class::MOP::Class::Trait::Immutable + - When throwing an error because of an immutable method, include that + method's name. Addresses RT #49680. (Shawn M Moore) + + * Class::MOP::Package + - Adding the same sub reference to multiple packages failed to update + the method map properly. RT #48985. Reported by Paul Mooney. (Dave + Rolsky) + - The get_method_map method is now private (and called as + _full_method_map or _method_map). The public version is available as a + deprecated method. (Dave Rolsky) + +0.92_01 Thu, Sep 10, 2009 + * Class::MOP::Package + - Backwards compatibility tweaks to XS for 5.8.1. (Goro Fuji) + + * Class::MOP + - Make sure XS code handles magical scalars correctly. (Goro Fuji) + + * Class::MOP::Class + - Documented the immutable_options method, which is useful if you need + to make a class mutable temporarily, and then nede to restore + immutability. (Dave Rolsky) + + * Many modules + - Deprecated features have been moved to their own module, + Class::MOP::Deprecated, for easier deprecation management. (Goro Fuji) + +0.92 Thu Aug 13, 2009 + * Class::MOP::Class + * Class::MOP::Package + - Move get_method_map and its various scaffolding into Package. (hdp) + + * Class::MOP::Method + - Allow Class::MOP::Method->wrap to take a Class::MOP::Method object as + the first argument, rather than just a coderef. (doy) + + * Class::MOP::Attribute + * Class::MOP::Class + - Allow attribute names to be false (while still requiring them to be + defined). (rafl) + +0.91 Wed Jul 29, 2009 + * Class::MOP::Method::Wrapped + - Fixing variable usage issues with the patch from previous + version, not properly using lexicals in the for + loops. (stevan) + +0.90 Tue Jul 21, 2009 + Japan Perl Association has sponsored Goro Fuji to improve startup + performance of Class::MOP and Moose. These enhancements may break + backwards compatibility if you're doing (or using) complex + metaprogramming, so, as always, test your code! + http://blog.perlassociation.org/2009/07/jpa-sponsors-moose-class-mop-work.html + * Class::MOP::Class * XS - - Anonymous classes were not destroyed properly when they went - out of scope, leading to a memory leak. RT #47480 (Goro Fuji). + - Anonymous classes were not completely destroyed when they went + out of scope, leading to a memory leak. RT #47480. (Goro + Fuji). * Class::MOP::Class - - get_method, has_method, and add_method no longer use get_method_map. - Methods are more lazily instantiated to improve performance pretty - significantly (Goro Fuji) + - The get_method, has_method, and add_method methods no longer + use get_method_map. Method objects are instantiated + lazily. This significantly improves Class::MOP's load + time. (Goro Fuji) * All classes - - Inline fewer metaclass-level constructors since the ones we have are - perfectly fine. This reduces the numbr of string evals (Goro Fuji) + - Inline fewer metaclass-level constructors since the ones we + have are perfectly fine. This reduces the number of string + evals. (Goro Fuji) + + * Class::MOP::Method::Wrapped + - If a method modifier set $_, this caused the modifier to blow + up, because of some weird internals. (Jeremy Stashewsky) 0.89 Fri Jul 3, 2009 * Class::MOP::Class @@ -165,7 +432,7 @@ Revision history for Perl extension Class-MOP. * Many methods have been renamed with a leading underscore, and a few have been deprecated entirely. The methods with a leading - underscore are consider "internals only". People writing + underscore are considered "internals only". People writing subclasses or extensions to Class::MOP should feel free to override them, but they are not for "public" use. @@ -612,7 +879,7 @@ Revision history for Perl extension Class-MOP. the symbol table as methods (these are optimized constant subs) 0.61 Fri. June 13, 2008 - - Okay, lets give this another try and see if PAUSE + - Okay, lets give this another try and see if PAUSE recognizes it correct this time. 0.60 Thurs. Jun 12, 2008 @@ -623,21 +890,21 @@ Revision history for Perl extension Class-MOP. !! Several fixes resulting in yet another 25-30% speedup !! * Class::MOP::Class - - now stores the instance of the instance + - now stores the instance of the instance metaclass to avoid needless recomputation and deletes it when the cache is blown - - introduce methods to query Class::MOP::Class for + - introduce methods to query Class::MOP::Class for the options used to make it immutable as well as - the proper immutable transformer. (groditi) + the proper immutable transformer. (groditi) * Class::MOP::Package - - {add, has, get, remove}_package_symbol all + - {add, has, get, remove}_package_symbol all now accept a HASH ref argument as well as the string. All internal usages now use the HASH ref version. * Class::MOP - - MOP.xs does sanity checks on the coderef + - MOP.xs does sanity checks on the coderef to avoid a segfault - is_class_loaded check now uses code that was improved in Moose's ClassName type @@ -647,19 +914,19 @@ Revision history for Perl extension Class-MOP. load_class (Sartak) - tests for this and other aspects of load_class (Sartak) - + * Class::MOP - Class::MOP::Class + Class::MOP::Class Class::MOP::Method Class::MOP::Method::Wrapped Class::MOP::Attribute - - switched usage of reftype to ref because + - switched usage of reftype to ref because it is much faster 0.58 Thurs. May 29, 2008 (late night release engineering)-- - - - fixing the version is META.yml, no functional + + - fixing the version is META.yml, no functional changes in this release 0.57 Wed. May 28, 2008 @@ -671,13 +938,13 @@ Revision history for Perl extension Class-MOP. instead of manually grabbing each symbol - streamlining &initialize somewhat, since it gets called so much - + * Class::MOP::Package - - made {get, has}_package_symbol not call - &namespace so much - - inlining a few calls to &name with + - made {get, has}_package_symbol not call + &namespace so much + - inlining a few calls to &name with direct HASH access key access - - added get_all_package_symbols to fetch + - added get_all_package_symbols to fetch a HASH of items based on a type filter similar to list_all_package_symbols - added tests for this @@ -686,7 +953,7 @@ Revision history for Perl extension Class-MOP. Class::MOP::Method::Constructor Class::MOP::Method::Generated Class::MOP::Method::Accessor - - added more descriptive error message to help + - added more descriptive error message to help keep people from wasting time tracking an error that is easily fixed by upgrading. @@ -699,7 +966,7 @@ Revision history for Perl extension Class-MOP. * Class::MOP - we now get the &check_package_cache_flag function from MRO::Compat - - All XS based functionality now has a + - All XS based functionality now has a Pure Perl alternative - the CLASS_MOP_NO_XS environment variable can now be used to force non-XS versions @@ -734,15 +1001,15 @@ Revision history for Perl extension Class-MOP. Class::MOP::Method::Generated Class::MOP::Method::Accessor Class::MOP::Method::Consructor - - the &wrap constructor method now requires that a - 'package_name' and 'name' attribute are passed. This - is to help support the no-XS version, and will - throw an error if these are not supplied. + - the &wrap constructor method now requires that a + 'package_name' and 'name' attribute are passed. This + is to help support the no-XS version, and will + throw an error if these are not supplied. - all these classes are now bootstrapped properly and now store the package_name and name attributes - correctly as well + correctly as well - ~ Build.PL has been removed since the + ~ Build.PL has been removed since the Module::Install support has been removed 0.55 Mon. April 28, 2008