X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Changes;h=f55ad9edf2bf46ba5f1c90a5548dd73e76226ef6;hb=af72687d6d45c59be325b4d43c852606c8a2c9c1;hp=0f94ac5f6f1c77728d880186223125dbc8fe90c5;hpb=b4009dc1e31303c02e243bdd40e221db77c2758c;p=gitmo%2FClass-MOP.git diff --git a/Changes b/Changes index 0f94ac5..f55ad9e 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,632 @@ 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. + +0.60 Thurs. Jun 12, 2008 + - Fixed a version number issue by bumping all modules + to 0.60. + +0.59 Thurs. Jun 12, 2008 + !! Several fixes resulting in yet another 25-30% speedup !! + + * Class::MOP::Class + - 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 + the options used to make it immutable as well as + the proper immutable transformer. (groditi) + + * Class::MOP::Package + - {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 + to avoid a segfault + - is_class_loaded check now uses code that + was improved in Moose's ClassName type + check (Sartak) + - nonsensical (undef, empty, reference) class + names now throw a more direct error in + load_class (Sartak) + - tests for this and other aspects of + load_class (Sartak) + + * Class::MOP + Class::MOP::Class + Class::MOP::Method + Class::MOP::Method::Wrapped + Class::MOP::Attribute + - 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 + changes in this release + +0.57 Wed. May 28, 2008 + !! Several speedups resulting in 20-25% speedups !! + || (thanks to konobi, groditi, mst & CataMoose) !! + + * Class::MOP::Class + - made get_method_map use list_all_package_symbols + 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 + direct HASH access key access + - 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 + Class::MOP::Method::Constructor + Class::MOP::Method::Generated + Class::MOP::Method::Accessor + - added more descriptive error message to help + keep people from wasting time tracking an error + that is easily fixed by upgrading. + + * Class::MOP::Immutable + - Don't inline a destructor unless the user actually + needs one + - added tests for this + 0.56 Saturday, May 24, 2008 * Class::MOP - we now get the &check_package_cache_flag