Merge branch 'stable'
[gitmo/Class-MOP.git] / Changes
diff --git a/Changes b/Changes
index 8d6bcff..f8801eb 100644 (file)
--- a/Changes
+++ b/Changes
 Revision history for Perl extension Class-MOP.
 
-0.90
-    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!
+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 number 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
@@ -171,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.
 
@@ -618,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
@@ -629,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
@@ -653,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
@@ -677,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
@@ -692,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.
 
@@ -705,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
@@ -740,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