Revision history for Perl extension Class-MOP.
+1.11 Sun, Oct 31, 2010
+
+ * Replace use of Test::Exception with Test::Fatal. (Karen Etheridge and Dave
+ Rolsky)
+
+1.10 Mon, Oct 18, 2010
+
+ * 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 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 considered "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::*
+ - 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. 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
+ - Reblessing into a package that supports overloading wasn't
+ properly adding overload magic to the object due to a bug
+ in (at least) 5.8.8. We now use $_[1] directly which seems
+ to set the magic properly. (Sartak)
+
+ * Class::MOP::Attribute
+ - The process_accessors method is now private. A public alias
+ exists (and will stick around for a few releases), but it
+ warns that calling the public method is deprecated.
+
+ * Class::MOP::Method::Generated
+ - Removed the new and _new methods, since this is an abstract
+ base class, and all existing subclasses implement their own
+ constructors.
+
+ * MOP.xs
+ - Stop is_class_loaded from thinking a class is loaded if it
+ only has an empty GV (Florian Ragwitz).
+ - Add a test for this (Yappo).
+ - Refactor get_all_package_symbols to allow short-circuiting
+ (Florian Ragwitz).
+ - Use this in is_class_loaded (Florian Ragwitz).
+ - Stop segfaulting when trying to get the name from a sub that's
+ still being compiled (Florian Ragwitz).
+ - Add tests for this (Florian Ragwitz).
+ - Prefix all public symbols with "mop_" (Florian Ragwitz).
+ - Clean up and simplify prehashing of hash keys (Florian Ragwitz).
+ - Simplify creating simple xs reader methods (Florian Ragwitz).
+ - Make everything compile with c++ compilers (Florian Ragwitz).
+ - Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
+
+ * Tests
+ - Remove optional test plans for tests depending on Sub::Name as
+ we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
+
+ * Makefile.PL
+ - Rebuild all c code if mop.h has changed (Florian Ragwitz)
+
0.78 Mon, February 23, 2009
* No changes from 0.77_01
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
!! 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
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
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
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.
* 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
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