Changes for version 2.001000 - 2016-02-29

  • Documentation
    • Added documentation for has's ability to accept an arrayref of attribute names to create with the same options.
    • Removed mention that we may not call BUILDARGS, since that behavior was removed in 2.000002.
    • Reorganized documentation of class methods to separate those provided as a public API (new/does/meta) from those used by Moo in the object lifecycle (BUILDARGS/FOREIGNBUILDARGS/BUILD/DEMOLISH).
    • Updated documentation of most class methods for clarity.
    • Updated BUILDARGS documentation to show an around rather than just overriding.
    • Added examples to FOREIGNBUILDARGS and BUILD.
    • Added explicit documentation for DOES and meta methods.
  • Fixes
    • Fixed grammar in error message when @ISA is changed unexpectedly before a constructor is fully generated.
    • Fixed Moo classes and Sub::Quote subs in packages that are nearly 252 characters long.
    • Fixed Sub::Defer::undefer_package emitting warnings.
    • Fixed detection of constructors that have already been inlined.
  • Performance
    • The generated code in constructors and setters has had a number of microoptimizations applied.
    • Deferred subs (and quoted subs like some accessors) in roles will be undefered before copying them to classes. This prevents the need for a goto on every call that would slow down the subs.
    • Fixed Moose inflation code resulting in constructors with deferred wrappers.
  • Other
    • Recommend Sub::Name 0.08, which fixes a memory leak.
    • The values given to BUILD subs will be the original values passed to new, rather than after coercions have been applied. This brings the behavior in line with Moose.

Modules

Moo
Minimalist Object Orientation (with Moose compatibility)
Minimal Object Orientation support for Roles
defer generation of subroutines until they are first called
efficient generation of subroutines via string eval
oo
syntactic sugar for Moo oneliners

Provides

in lib/Method/Generate/Accessor.pm
in lib/Method/Generate/BuildAll.pm
in lib/Method/Generate/Constructor.pm
in lib/Method/Generate/DemolishAll.pm
in lib/Method/Inliner.pm
in lib/Moo/HandleMoose.pm
in lib/Moo/HandleMoose.pm
in lib/Moo/HandleMoose/FakeMetaClass.pm
in lib/Moo/HandleMoose/_TypeMap.pm
in lib/Moo/Object.pm
in lib/Moo/_Utils.pm
in lib/Moo/_mro.pm
in lib/Moo/_strictures.pm
in lib/Moo/sification.pm