[DEPRECATIONS]
- The optimize_as option for type constraints has been deprecated. Use the
inline_as option to provide inlining code instead. (Dave Rolsky)
[API CHANGES]
Methods to introspect a class's methods will now return methods defined in
UNIVERSAL (isa, can, etc.). This also means that you can wrap these
methods with method modifiers. RT #69839. Reported by Vyacheslav
Matyukhin. (Dave Rolsky)The ->parent and ->parents method for a union now return the nearest
common ancestor of that union's component types. See Moose::Manual::Delta
for more details. (Dave Rolsky)The ->parents method used to return an arrayref for union types, and a
list of one or more types for all other types. Now they all return
lists. (Dave Rolsky)The ->is_subtype_of and ->is_a_type_of methods have changed their behavior
for union types. Previously, they returned true if any of their member
types returned true for a given type. Now, all of the member types must
return true. RT #67731. (Dave Rolsky)
[ENHANCEMENTS]
The Moose::Exporter module now has a "meta_lookup" option when creating an
importer. This allows you to specify an alternate method for determining
the metaclass of a caller. This is useful for modules like
MooseX::Role::Parameterized which generate new metaclasses on the
fly. (sartak)Added a Moose::Meta::Method->is_stub method. (Dave Rolsky)
[BUG FIXES]
A subtype of a union type did not return the right results when you called
->is_subtype_of or ->is_a_type_of on it. This has been fixed. RT
#70322. (Dave Rolsky)An attribute accessor or delegation method can overwrite a stub method and
this will no longer throw an error. Reported by Mark-Jason Dominus. RT
#69988. (Dave Rolsky)The error generated by unfulfilled method requirements during role
composition now mentions how to work around imported methods not being
recognized. Reported by Michael Schwern. RT #60583. (doy)class_type and role_type will now throw errors if you attempt to use them
to override existing types, just like type and subtype have always done.
(doy)Implicitly creating class or role types by using them as the 'isa' or
'does' parameter to attribute construction will now register the type. This
means that it cannot later be redefined as something else. (doy)$class_type->is_subtype_of no longer returns true if passed the name of the
class that the class type represents when the class type wasn't registered.
(doy)Removing anonymous metaclasses prematurely no longer prevents reaping of
the associated stash. (doy)
[OTHER]
- The Class::MOP::load_class and Class::MOP::is_class_loaded subroutines are
no longer documented, and will cause a deprecation warning in the
future. Moose now uses Class::Load to provide this functionality, and you
should as well. (Dave Rolsky)