Include method name in immutable methods (fixes #49680)
[gitmo/Class-MOP.git] / Changes
diff --git a/Changes b/Changes
index a426415..c84348d 100644 (file)
--- a/Changes
+++ b/Changes
 Revision history for Perl extension Class-MOP.
 
-0.78_01 Wed, March 18, 2009
+Next
+    * mop.c
+      - Applied an MS VC++ compilation fix from Taro Nishino. RT #48072
+
+    * 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)
+
+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 completely destroyed when they went
+        out of scope, leading to a memory leak. RT #47480. (Goro
+        Fuji).
+
+    * Class::MOP::Class
+      - 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)
+
+    * 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
+    * Class::MOP::Class::Immutable::Trait
+      - Made the Trait act like a role with a bunch of "around"
+        modifiers, rather than sticking it in the inheritance
+        hierarchy. This fixes various problems that caused with
+        metaclass compatibility, which broke Fey::ORM.
+
+    * Class::MOP::Method
+      - Allow a blessed code reference as the method body. Fixes a
+        problem interaction with MooseX::Types. (ash)
+
+    * Class::MOP::Instance
+      - add inline version of rebless_instance_structure. (doy)
+      - change inline_slot_access to use single quotes (gphat)
+
+0.88 Tue, Jun 23, 2009
+    * Class::MOP::Class
+      - Moved the __INSTANCE__ parameter to _construct_instance from
+        Moose to here. (doy)
+      - Fixed some issues involving metaclasses of metaclasses and
+        immutability. (doy)
+
+0.87 Sun, Jun 21, 2009
+    * Various
+      - Made sure to always local-ize $@ and $SIG{__DIE__} before
+        calling an eval. Fixes RT #45973.
+
+    * Class::MOP::Class
+      - Synced docs about immutability with the current reality (which
+        changed back in 0.82_01)
+      - Removed the immutable_transformer method, which had been
+        returning undef since 0.82_01 anyway.
+
+    * Tests
+      - Got rid of tests which needed Moose and improved testing of
+        constructor/destructor inlining warnings. Fixes RT #47119.
+
+0.86 Tue, Jun 16, 2009
+    * Class::MOP::Class
+      - If you redefined a subroutine at runtime and then wrapped it
+        with a method modifier, the modifier could in some cases wrap
+        the original version of the subroutine. Fixes RT #46957.
+
+    * Class::MOP::Class
+      - make_immutable issues a warning instead of overriding an
+        existing DESTROY method (Dylan William Hardison). Fixes RT
+        #46854.
+
+0.85 Sat, Jun 6, 2009
+    * Class::MOP::Attribute
+      - Allow default values to be Class::MOP::Methods.  (Florian
+        Ragwitz)
+      - Test the above. (Rhesa Rozendaal)
+      - Tweak original commit so the intent matches the accepted
+        behavior (Nicholas Perez)
+
+    * Class::MOP
+      - Localize $SIG{__DIE__} inside _try_load_one_class (Sartak)
+
+    * Class::MOP::Class
+      - Add direct_subclasses method (Sartak)
+        - Tests for subclasses and direct_subclasses (Sartak)
+      - subname is no longer used unconditionally in add_method, but
+        only if the code reference's name is '__ANON__' (nothingmuch)
+      - Add a hook for _superclasses_updated (Sartak)
+
+    * Class::MOP::Method
+      - Remove long, old warning about possibly outdated modules
+        (Sartak)
+
+0.84 Tue, May 12, 2009
+    * Makefile.PL
+      - Depend on Text::Exception 0.27 to avoid failing tests ond old
+        versions (rafl)
+
+    * Class::MOP
+      - Made is_class_loaded a little stricter. It was reporting that
+        a class was loaded if it merely had an @ISA variable in its
+        stash. Now it checks that the @ISA var has elements in it.
+      - Deprecate in_global_destruction and subname re-exporting
+        (perigrin & Sartak)
+
+    * Class::MOP::Class
+      - Explicitly use Devel::GlobalDestruction and Sub::Name
+        (perigrin)
+
+    * Class::MOP::Package
+      - Disable prototype mismatch warnings for add_package_symbol.
+        (Florian Ragwitz)
+    * Tests
+      - Add test for finding methods from $meta->name->meta before immutable,
+        (t0m)
+
+0.83 Mon, April 27, 2009
+    * Class::MOP::Class
+      - Fix segfault when calling get_method_map on a metaclass for an empty
+        package (doy)
+
+0.82_02 Fri, April 24, 2009
+    * Class::MOP::Method::Inlined
+      - Don't inline if the expected method is not defined at all (happens with
+        e.g. Moose::Object::_new is the expected method due to an overridden
+        name)
+    * Tests
+      - Some tests were trying to load Class::MOP::Immutable, which
+        was removed in 0.82_01.
+
+0.82_01 Thu, April 23, 2009
+    * Class::MOP::Immutable (and others)
+      - Refactor the immutability system to use a pre-defined class
+        for the immutable metaclass of Class::MOP::Class::Immutable::$class
+      - Rather than generating methods into this class every time, use
+        a Trait (basic mixin) to supply the cached methods
+      - Remove the hack that returns the mutable metaclass for
+        metacircularity in order to provide consistent meta-metaclasses
+        for the Moose compatibility handling code
+        (mst broke it, nothingmuch fixed it)
+
+0.82 Mon, April 20, 2009
+    * Various
+      - The deprecation wrappers for some renamed methods were not
+        passing arguments to the new method. (nothingmuch)
+
+    * Class::MOP::Immutable
+      - Warn during immutablization if the local class provides its own
+        constructor, to parallel the warning in Moose when a superclass
+        provides its own constructor (doy)
+
+0.81 Tue, April 7, 2009
+    * Class::MOP
+    * Class::MOP::Class
+    * Class::MOP::Instance
+    * Class::MOP::Attribute
+    * Class::MOP::Method::Accessor
+    * Class::MOP::Method::Constructor
+      - Include stack traces in the deprecation warnings introduced in
+        0.80_01. (Florian Ragwitz)
+
+    * MOP.xs
+      - Avoid c compiler warnings by declaring some unused function
+        arguments. (Florian Ragwitz)
+
+0.80_01 Sun, April 5, 2009
+    * Makefile.PL
+      - Make sure to preserve any compiler flags already defined in
+        Config.pm. Patch by Vincent Pit. RT #44739.
+
+    * 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
+      subclasses or extensions to Class::MOP should feel free to
+      override them, but they are not for "public" use.
+
+      - Class::MOP::Class
+        - construct_class_instance => _construct_class_instance (use new_object)
+        - construct_instance => _construct_instance (use new_object)
+        - check_metaclass_compatibility => _check_metaclass_compatibility
+        - create_meta_instance => _create_meta_instance (use get_meta_instance)
+        - clone_instance => _clone_instance (use clone_object)
+        - compute_all_applicable_methods is deprecated, use get_all_methods
+        - compute_all_applicable_attributes is deprecated, use get_all_attributes
+
+      - Class::MOP::Instance
+        - bless_instance_structure is deprecated and will be removed
+          in a future release
+
+      - Class::MOP::Module
+        - create has been renamed to _instantiate_module. This method
+          does not construct an object, it evals some code that
+          creates the relevant package in Perl's symbol table.
+
+      - Class::MOP::Method::Accessor
+        - initialize_body => _initialize_body (this is always called
+          when an object is constructed)
+        - /(generate_.*_method(?:_inline)?)/ => '_' . $1
+
+      - Class::MOP::Method::Constructor
+        - initialize_body => _initialize_body (this is always called
+          when an object is constructed)
+        - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
+        - attributes => _attributes
+        - meta_instance => _meta_instance
+
+0.80 Wed, April 1, 2009
     * Class::MOP::*
-      - Revised and reorganized all of the API documentation. All
-        classes now have (more or less) complete API documentation.
+      - Call user_class->meta in fewer places, with the eventual goal
+        of allowing the user to rename or exclude ->meta
+        altogether. Instead uses Class::MOP::class_of. (Sartak)
+
+    * Class::MOP
+      - New class_of function that should be used to retrieve a
+        metaclass. This is unlike get_metaclass_by_name in that it
+        accepts instances, not just class names. (Sartak)
+
+    * Class::MOP
+      - load_first_existing_class didn't actually load the first
+        existing class; instead, it loaded the first existing and
+        compiling class.  It now throws an error if a class exists (in
+        @INC) but fails to compile.  (hdp)
+
+    * Class::MOP
+    * Class::MOP::Class
+      - we had some semi-buggy code that purported to provide a
+        HAS_ISAREV based on whether mro had get_isarev (due to an
+        oversight, it always returned 1). Since mro and MRO::Compat
+        have always had get_isarev, HAS_ISAREV was pointless. This
+        insight simplified the subclasses method by deleting the
+        pure-perl fallback. HAS_ISAREV is now deprecated. (Sartak)
+
+0.79 Fri, March 29, 2009
+    * No changes from 0.78_02.
 
+0.78_02 Thu, March 26, 2009
     * Class::MOP::Class
     * Class::MOP::Immutable
       - A big backwards-incompatible refactoring of the Immutable API,
-        and the make_immutable/make_mutable pieces of the Class API.
+        and the make_immutable/make_mutable pieces of the Class
+        API. The core __PACKAGE__->meta->make_immutable API remains
+        the same, however, so this should only affect the most
+        guts-digging code.
+
+    * XS code
+      - The XS code used a macro, XSPROTO, that's only in 5.10.x. This
+        has been fixed to be backwards compatible with 5.8.x.
+
+    * Class::MOP::Class
+      - Add a hook for rebless_instance_away (Sartak)
+      - Use blessed instead of ref to get an instance's class name
+        in rebless_instance. (Sartak)
+
+0.78_01 Wed, March 18, 2009
+    * Class::MOP::*
+      - Revised and reorganized all of the API documentation. All
+        classes now have (more or less) complete API documentation.
 
     * Class::MOP::Class
     * Class::MOP::Instance
@@ -371,7 +672,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
@@ -382,21 +683,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
@@ -406,19 +707,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
@@ -430,13 +731,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
@@ -445,7 +746,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.
 
@@ -458,7 +759,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
@@ -493,15 +794,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