Revision history for Perl extension Class-MOP.
+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)
+
+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::*
+ - 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
+
+0.77_01 Sun, February 22, 2009
+ * Everything
+ - This package now requires its XS components. Not using
+ Sub::Name lead to different behavior and bugginess in the pure
+ Perl version of the code. A Moose test would fail when run
+ against the pure Perl version of this code.
+
+ * Class::MOP::Instance
+ - The inline_* methods now quote attribute names themselves, and
+ don't expect to receive a quoted value.
+
+
+0.77 Sat, February 14, 2009
+ * MOP.xs
+ - Avoid assertion errors on debugging perls in is_class_loaded
+ (Florian Ragwitz)
+
+ * Class::MOP
+ - Fixed various corner cases where is_class_loaded incorrectly
+ returned true for a class that wasn't really loaded. (Dave
+ Rolsky)
+
+ * Class::MOP::Class
+ - Add get_all_method_names (Sartak)
+ - Add a wrapped_method_metaclass attribute (Florian Ragwitz)
+
+ * Class::MOP::Package
+ - Disable deprecated get_all_package_symbols in list
+ context. (Florian Ragwitz)
+
+ * Makefile.PL
+ - Make sure we generate a BSD-compatible Makefile (Florian
+ Ragwitz)
+
+ * Class::MOP::Class
+ - The misspelled "check_metaclass_compatability" method we've
+ kept around for backwards compat_i_bility will be removed in a
+ near future release. You've been warned.
+
+0.76 Thu, January 22, 2009
+ * Class::MOP::Method::Generated
+ - Added new private methods to support code generation, which
+ are being used by Moose and can be used by MooseX
+ authors. (mst)
+ - Generated methods are now generated with a #line directive
+ reflecting the source of the generated method. (nothingmuch)
+
+ * Class::MOP::Class
+ - Clarified documentation of methods that return
+ Class::MOP::Method objects. (doy)
+
+ * Class::MOP
+ - Clarified documentation of the metaclass cache methods. (Sartak)
+
+ * Tests
+ - Add test showing how the xs Class::MOP::is_class_loaded can
+ be made to operate differently to the pure perl version (t0m)
+
+0.75 Wed, December 31, 2008
+ * Class::MOP::Class
+ - A class that was made immutable and then mutable could end up
+ sharing an immutable transformer object
+ (Class::MOP::Immutable) with other classes, leading to all
+ sorts of odd bugs. Reported by t0m. (Dave Rolsky)
+
+0.74 Tue, December 25, 2008
+ * MOP.xs
+ - Add an xs implementation of Class::MOP::is_class_loaded (closes
+ RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
+ - Changed internals to make prehashing of hash keys easier and less
+ error-prone. (Florian Ragwitz)
+ * Class::MOP::Class
+ - Fix documentation to show that around modifiers happen on both
+ sides of the modified method. (Dave Rolsky)
+
+0.73 Tue, December 16, 2008
+ * MOP.xs
+ - Don't use Perl_mro_meta_init. It's not part of the public perl
+ api. Fixes failures to build on Win32 (RT #41750). (Florian
+ Ragwitz)
+ * t/082_get_code_info.t
+ - Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
+ munger anonymous subs when under -d and so making the tests
+ succeed in that case.
+
+0.72 Mon, December 8, 2008
+ * Class::MOP::Package
+ - Pass options to _new, so subclass' attributes can be
+ initialized (Sartak)
+ * Class::MOP::Method
+ - In the docs, indicate that package_name and name are required
+ when calling ->wrap (Stefan O'Rear)
+
+0.71_02 Fri, December 5, 2008
+ * Class::MOP::Immutable
+ - Added a new attribute, inlined_constructor, which is true if
+ the constructor was inlined.
+ * Class::MOP::Package
+ - Make get_all_package_symbols return a hash ref in scalar
+ context and deprecate calling it in list context with a
+ warning. (Florian Ragwitz)
+ * MOP.xs
+ - Various improvements and refactoring, making things more robust and
+ easier to maintain. (Florian Ragwitz)
+
+0.71_01 Wed, December 3, 2008
+ * Class::MOP::Method
+ - Add an "execute" method to invoke the body so
+ we can avoid using the coderef overload (Sartak)
+ * Class::MOP::Immutable
+ - When we memoize methods, get their results lazily
+ to remove some compile-time cost (Sartak)
+ - Small speedup from eliminating several method
+ calls (Sartak)
+ * Class::MOP::Class
+ - Some small internal tweaks to try to reduce the number of
+ times we call get_method_map when bootstrapping the MOP. This
+ might make loading Class::MOP (and Moose) a little
+ faster. (Dave Rolsky)
+ - Implemented an optional XS version of get_method_map. Mostly
+ taken from a patch by Goro Fuji (rt.cpan.org #41080), with
+ help form Florian Ragwitz. (Dave Rolsky)
+ - Make the behaviour of of get_all_package_symbols (and
+ therefore get_method_map) consistent for stub methods. Report
+ and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
+
+0.71 Wed November 26, 2008
+ * Class::MOP::Class
+ * Class::MOP::Module
+ - Actual package creation has moved upward from
+ Class to Module so that Moose roles can share
+ the code (Sartak)
+
+0.70_01 Mon, November 19, 2008
+ * Class::MOP
+ - Fixes for failures with blead (Florian Ragwitz)
+ - Silenced compiler warnings (Florian Ragwitz)
+
+0.70 Fri, November 14, 2008
+ * Class::MOP
+ - Fixed an odd corner case where the XS version of
+ get_all_package_symbols could cause a segfault. This only
+ happened with inlined constants in Perl 5.10.0 (Florian
+ Ragwitz)
+
+0.69 Fri, November 7, 2008
+ * Class::MOP::Method::Wrapped
+ - Added introspection methods for method modifiers (Dave Rolsky)
+
+
+0.68 Fri October 24, 2008
+ * Class::MOP
+ - Make load_class require by file name instead of module name.
+ This stops confusing error messages when loading '__PACKAGE__'.
+ (Florian Ragwitz)
+ - Add load_one_class_of function to enable you to load one of a
+ list of classes, rather than having to call load_class multiple
+ times in an eval. (t0m)
+
+0.67 Tue October 14, 2008
+ * Class::MOP::Class
+ - Call a method on the class after setting the superclass list
+ so that we can get Perl to detect cycles before MRO::Compat
+ spirals into an infinite loop (sartak)
+ - Reported by Schwern, [rt.cpan.org #39001]
+ - In create(), pass unused options on to initialize()
+ - added test for this
+
+0.66 Sat September 20, 2008
+ !! This release has an incompatible change regarding !!
+ introspection of a class's method with Class::MOP::Class !!
+
+ * Tests and XS
+ - We (us maintainers) now run all tests with XS and then without
+ XS, which should help us catch skew between the XS/pure Perl
+ code. (Dave Rolsky)
+
+ * Class::MOP::Class
+ ! The alias_method method has been deprecated. It now simply
+ calls add_method instead. There is no distinction between
+ aliased methods and "real" methods.
+
+ This means that methods added via alias_method now show up as
+ part of the class's method list/map. This is a backwards
+ incompatible change, but seems unlikely to break any
+ code. Famous last words. (Dave Rolsky)
+
+ * Class::MOP::Class
+ - Fixed the spelling of "compatibility", but we still have a
+ "check_metaclass_compatability" method for backwards
+ compatibility.
+
+0.65 Mon September 1, 2008
+ For those not following the series of dev releases, the changes
+ from 0.64 from 0.65 can mostly be summed up as a lot performance
+ improvements by nothingmuch, including new optional XS versions of
+ some methods. Also, Class::MOP now works _without_ any XS modules,
+ for sad systems without a compiler.
+
+ * Class::MOP::Method
+ - Added name and package_name XS accessors, and make sure all
+ the XS and Perl versions work the same way. (Dave Rolsky)
+
+ * MOP.xs
+ - The XS versions of various methods just returned undef when
+ called class methods, rather than dying like the pure Perl
+ versions. (Dave Rolsky)
+
+0.64_07 Fri August 29, 2008
+ * Class::MOP
+ - Silenced warnings that managed to break Moose tests when XS
+ was loaded. (Dave Rolsky)
+ - Some XS versions of methods were ignored because of typos in
+ MOP.xs. (Dave Rolsky)
+
+0.64_06 Mon August 25, 2008
+ * Class::MOP (MOP.xs)
+ - Another MS VC++ fix, cannot declare a variable in the middle
+ of a scope (Taro Nishino).
+
+0.64_05 Sun August 24, 2008
+ * Class::MOP
+ - None of the dev releases actually loaded the XS properly, but
+ we silently fell back to the pure Perl version of the
+ code. (Dave Rolsky)
+
+ * Class::MOP (MOP.xs)
+ - Replaced some code that used functions not available on Visual
+ C++ with some Perl XS API bits (Dave Rolsky).
+
+0.64_04 Sat August 23, 2008
+ * Class::MOP::Class
+ - Workaround a bug in 5.8.1's goto sub (nothingmuch)
+
+ * pod.t and pod_coveraget.t
+ - These are no longer shipped with the tarball because of bogus
+ failures from CPAN testers. (Dave Rolsky)
+
+0.64_03 Thu August 21, 2008
+ * Class::MOP::Package
+ - Some (legit) code was misparsed by earlier 5.8.x
+ releases. (nothingmuch)
+
+ * Class::MOP
+ - Fix a constant in void context warning (nothingmuch)
+
+0.64_02 Thu August 21, 2008
+ * Makefile.PL and Class::MOP
+ - Explicitly require Perl 5.8.0+ (Dave Rolsky)
+
+ * Makefile.PL
+ - Add missing prereqs that got lost in the switch away from
+ Module::Install.
+
+ * Class::MOP::Instance
+ - New method - get_all_attributes (nothingmuch)
+
+0.64_01 Wed August 20, 2008
+ * Makefile.PL
+ - We now check to see if you have a compiler. If you don't, the
+ module installs without some XS bits, but will work the same
+ as with XS. This should make it easier to install on platforms
+ without a compiler (like Windows). (Dave Rolsky)
+
+ * many modules
+ - Perl 6 style attribute naming replaced with sane style ('methods', not
+ '%!methods'). These changes should not impact any existing API uses.
+ (nothingmuch).
+
+ * many modules
+ - Quite a number of optimizations based on profiling, including
+ allowing constructors to take hash references instead of
+ hashes, duplicating some frequently used code in XS, and
+ making constructors immutable. These changes should not impact
+ any existing API uses. (nothingmuch)
+
+ * Many modules
+ - Constructors now respect the meta attributes of their subclasses,
+ facilitating MOP extensibility. More related changes will happen in the
+ next several releases. (nothingmuch)
+
+ * Class::MOP::Class
+ - New method - get_all_methods, replaces the deprecated
+ compute_all_applicable_methods. get_all_attributes provided for
+ consistency (nothingmuch)
+ - New method - wrap_method was refactored out of get_method_map
+ (nothingmuch)
+ - New API for meta instance invalidation - invalidate_meta_instance,
+ invalidate_meta_instances, add_dependent_meta_instance,
+ remove_dependent_meta_instance, called automatically when attribute
+ definitions change and allows notification of dependent subclasses.
+ (nothingmuch)
+
+0.64 Sun August 3, 2008
+ * Class::MOP::Immutable
+ - fixing subtle edge case in immutable when you
+ call ->meta (stevan)
+ - clean up option processing (nothingmuch)
+
+ * Class::MOP::Instance
+ - inlined initialize slot didn't match
+ non-inlined (nothingmuch)
+
+0.63 Mon July 7, 2008
+ * Class::MOP
+ - load_class will initialize a metaclass even if
+ the class is already loaded (sartak)
+ - load_class now returns the metaclass instance
+ instead of just 1 (sartak)
+
+ * elsewhere
+ - better error messages (sartak and Dave Rolsky)
+
+0.62 Wed June 18, 2008
+ - in is_class_loaded, recognize scalar references (as opposed to globs) in
+ 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
recognizes it correct this time.