1 Also see Moose::Manual::Delta for more details of, and workarounds
2 for, noteworthy changes.
6 2.0004 Mon, May 09, 2011
10 * Bump the List::MoreUtils dep to avoid buggy behavior in old versions.
12 * Sort the list of roles and the alias and excludes parameters when
13 determining caching, since their order doesn't matter.
15 2.0003 Mon, May 09, 2011
19 * Applying multiple role objects (rather than role names) at once no longer
20 skips every other role. (rjbs)
22 * Caching of anon classes now works more sanely in the presence of role
23 application parameters - alias and excludes options are taken into account,
24 and caching is disabled entirely if other parameters exist. Asking for
25 caching (instead of just not weakening) when parameters are given will
26 begin warning in Moose 2.0200. (doy, autarch)
28 2.0002 Thu, Apr 28, 2011
32 * Provide definition context information for constructors and destructors, so
33 that they will show up as something other than "generated method (unknown
34 origin)". Also, add the package that accessors are defined in to their
37 * Use Devel::PartialDump in type constraint error messages, if it is
42 * Stop hiding warnings produced by throwing errors in DEMOLISH methods.
44 * The 'reset' native delegation for Counter attributes will now also respect
45 builders (previously, it only respected defaults).
47 2.0001 Fri, Apr 22, 2011
51 * Anonymous classes and roles now have a unified implementation in
52 Class::MOP::Package. This means that anonymous packages are now also
53 possible. (Shawn M Moore, doy)
57 * No longer call XSLoader from multiple places, as this causes issues on
58 older perls. (doy, ribasushi)
60 * Moose::Meta::Role->create now accepts the 'roles' parameter, as it was
61 documented to. (Chris Weyl)
63 * Depend on Eval::Closure 0.04, which fixes some issues in mod_perl
64 environments. (doy, mateu)
66 2.0000 Mon, Apr 11, 2011
70 * The RegexpRef type constraint now accepts regular expressions blessed into
71 other classes, such as those found in pluggable regexp engines.
72 Additionally the 'Object' constraint no longer rejects objects implemented
73 as a blessed regular expression. (David Leadbeater)
77 * Moose::Manual::Support now explicitly states when major releases are
78 allowed to happen (January, April, July, or October).
80 1.9906-TRIAL Mon, Apr 04, 2011
84 * Update conflicts list.
87 1.9905-TRIAL Mon, Mar 28, 2011
91 * The Moose::Meta::Role::Attribute class now has an original_role method
92 which returns the role which first defined an attribute. See the docs for
93 details. (Dave Rolsky)
95 * Moose::Util::MetaRole will make sure that the class to which you're
96 applying metaroles or base class roles can actually have them applied. If
97 not (it's not a Moose class, it has a non-Moose metaclass, etc.), then it
98 gives a useful error message. Previously, this would just end up dying in
99 the MetaRole code without a useful message. (Dave Rolsky)
103 * When a role had its own applied_attribute metaclass (usually from MetaRole
104 application), that metaclass would get lost when that role participated in
105 role composition. It was also lost if that role was consumed by some other
106 role. Both of these cases have been fixed. Attributes are always applied
107 with the applied_attribute metaclass of the role which originally defined
110 1.9904-TRIAL Fri, Mar 04, 2011
114 * Reinitializing anonymous roles used to accidentally clear out the role's
115 stash in some circumstances. This is now fixed. (doy)
117 * The Int type constraint now rejects integers with trailing newlines.
120 1.9903-TRIAL Mon, Feb 28, 2011
124 * Reverse the order that Moose::Exporter 'also' exports are dispatched. When
125 trying to re-export from a package that itself exported a modified set of
126 Moose sugar, you'd get the original Moose sugar instead of the overrides.
127 There are also now tests for this. (perigrin)
129 * Don't initialize lazy attributes with defaults in the constructor (for
130 immutable classes). (mo)
132 * When reinitializing meta objects for classes and roles, we failed to
133 preserve roles and role applications. This led to weird bugs. Many MooseX
134 modules end up reinitializing your class or role. (Dave Rolsky)
136 1.9902-TRIAL Mon, Jan 03, 2011
140 * Fix generation of CCFLAGS.
142 * Add a bit more Dist::Zilla functionality.
144 1.9901-TRIAL Mon, Jan 03, 2011
148 * Fix some indexing issues.
150 * Fix a few issues with the conflict checking stuff.
152 1.9900-TRIAL Sat, Jan 01, 2011
156 * The entire Class::MOP distribution has been merged with Moose. In the
157 future, the Class::MOP code itself will be merged into Moose, and
158 eventually the Class::MOP namespace will disappear entirely. For the
159 current release, we have simply changed how Class::MOP is
160 distributed. (Dave Rolsky).
162 * Switched to Dist::Zilla for development. However, we still have a minimal
163 Makefile.PL in the repository that can be used for development. (Dave
168 * Roles now have their own default attribute metaclass to use during
169 application to a class, rather than just using the class's
170 attribute_metaclass. This is also overridable via ::MetaRole, with the
171 applied_attribute key in the role_metaroles hashref (doy).
173 * The internal code used to generate inlined methods (accessor, constructor,
174 etc.) has been massively rewritten. MooseX modules that do inlining will
175 almost certainly need to be updated as well.
179 * We now load the roles needed for native delegations only as needed. This
180 speeds up the compilation time for Moose itself. (doy)
183 1.25 Fri, Apr 1, 2011
187 * Reinitializing anonymous roles used to accidentally clear out the role's
188 stash in some circumstances. This is now fixed. (doy) (backported from
192 1.24 Tue, Feb 24, 2011
196 * Reverse the order that Moose::Exporter 'also' exports are dispatched. When
197 trying to re-export from a package that itself exported a modified set of
198 Moose sugar, you'd get the original Moose sugar instead of the overrides.
199 There are also now tests for this. (perigrin) (backported from 1.9903)
202 1.23 Sun, Feb 13, 2011
206 * The 1.22 release had a bad MANIFEST. This has been fixed.
209 1.22 Sun, Feb 13, 2011
213 * When reinitializing meta objects for classes and roles, we failed to
214 preserve roles and role applications. This led to weird bugs. Many MooseX
215 modules end up reinitializing your class or role. (Dave Rolsky) (backported
218 1.21 Wed, Nov 24, 2010
222 * The Support manual has been updated to reflect our new major/minor version
223 policy. (Chris Prather)
225 * The Contributing manual has been updated to reflect workflow changes based
226 on this new support policy. (doy)
230 * The role attribute metaclass did not inherit from Class::MOP::Object,
231 which could cause errors when trying to resolve metaclass compatibility
232 issues. Reported by Daniel Ruoso. (doy)
234 * The lazy_build feature was accidentally removed from all the docs. Now
235 it's listed in Moose.pm again. (Chris Prather)
237 1.20 Fri, Nov 19, 2010
241 * When using native delegations, if an array or hash ref member failed a
242 type constraint check, Moose ended up erroring out with "Can't call method
243 "get_message" on unblessed reference" instead of generating a useful error
244 based on the failed type constraint. Reported by t0m. RT #63113. (Dave
247 1.19 Tue, Nov 2, 2010
251 * There was still one place in the code trying to load Test::Exception
252 instead of Test::Fatal. (Karen Etheridge)
255 1.18 Sun, Oct 31, 2010
259 * Type constraint objects now have an assert_coerce method which will either
260 return a valid value or throw an error. (rjbs)
262 * We now warn when an accessor for one attribute overwrites an accessor for
263 another attribute. RT #57510. (Dave Rolsky)
267 * The native Array and Hash delegation methods now coerce individual new
268 members if the _member type_ has a coercion. In other words, if the array
269 reference is defined as an ArrayRef[DateTime], and you've defined a
270 coercion from Int to DateTime, then pushing an integer via a delegation
271 method will coerce the integer to a DateTime object. Reported by Karen
272 Etheridge. RT #62351. (Dave Rolsky)
274 * An attribute using native delegations did not always properly coerce and
275 type check a lazily set default value. (doy and Dave Rolsky)
277 * Using a regexp to define delegations for a class which was not yet loaded
278 did not actually work, but did not explicitly fail. However, it caused an
279 error when the class was loaded later. Reported by Max Kanat-Alexander. RT
280 #60596. (Dave Rolsky)
282 * Attempting to delegate to a class or role which is not yet loaded will now
283 throw an explicit error. (Dave Rolsky)
285 * Attempting to set lazy_build in an inherited attribute was ignored. RT
290 * The Moose test suite now uses Test::Fatal instead of
291 Test::Exception. (rjbs)
293 1.17 Tue, Oct 19, 2010
297 * Make native delegation inlining work with instance metaclasses where slot
298 access is an do {} block, like Kioku. This fixes the use of native
299 delegations together with Kioku. (Scott, doy)
301 1.16 Mon, Oct 18, 2010
305 * Almost every native delegation method which changes the attribute value
306 now has an explicitly documented return value. In general, this return
307 value matches what Perl would return for the same operation. (Dave Rolsky)
309 * Lots of work on native delegation documentation, including documenting
310 what arguments each native delegation method allows or requires. (Dave
313 * Passing an odd number of args to ->new() now gives a more useful warning
314 than Perl's builtin warning. Suggested by Sir Robert Burbridge. (Dave
317 * Allow disabling stack traces by setting an environment variable. See
318 Moose::Error::Default for details. This feature is considered
319 experimental, and may change in a future release. (Marcus Ramberg)
321 * The deprecation warning for using alias and excludes without a leading
322 dash now tells you the role being applied and what it was being applied
327 * A number of native trait methods which expected strings as arguments did
328 not allow the empty string. This included Array->join, String->match,
329 String->replace, and String->substr. Reported by Whitney Jackson. RT
330 #61962. (Dave Rolsky)
332 * 'no Moose' no longer inadvertently removes imports it didn't create
333 itself. RT #60013. (Florian Ragwitz, doy)
335 * Roles now support passing an array reference of method names to method
336 modifier sugar functions. (doy)
338 * Native traits no longer use optimized inlining routines if the instance
339 requests it (in particular, if inline_get_slot_value doesn't return
340 something that can be assigned to). This should fix issues with
341 KiokuDB::Class. (doy)
343 * We now ignore all Class::MOP and Moose classes when determining what
344 package called a deprecated feature. This should make the deprecation
345 warnings saner, and make it possible to turn them off more easily. (Dave
348 * The deprecated "default is" warning no longer happens if the attribute has
349 any accessor method defined (accessor, reader, writer). Also, this warning
350 only happens when a method that was generated because of the "default is"
351 gets called, rather than when the attribute is defined. (Dave Rolsky)
353 * The "default default" code for some native delegations no longer issues a
354 deprecation warning when the attribute is required or has a builder. (Dave
357 * Setting a "default default" caused a fatal error if you used the builder
358 or lazy_build options for the attribute. Reported by Kent Fredric. RT
359 #59613. (Dave Rolsky)
361 1.15 Tue, Oct 5, 2010
365 * Major changes to Native Traits, most of which make them act more like
366 "normal" attributes. This should be mostly compatible with existing code,
367 but see Moose::Manual::Delta for details.
369 * A few native traits (String, Counter, Bool) provide default values of "is"
370 and "default" when you created an attribute. Allowing them to provide
371 these values is now deprecated. Supply the value yourself when creating
374 * New option 'trait_aliases' for Moose::Exporter, which will allow you to
375 generate non-global aliases for your traits (and allow your users to
376 rename the aliases, etc). (doy)
378 * 'use Moose' and 'use Moose::Role' now accept a '-meta_name' option, to
379 determine which name to install the 'meta' name under. Passing 'undef'
380 to this option will suppress generation of the meta method entirely. (doy)
382 * Moose now warns if it overwrites an existing method named "meta" in your
383 class when you "use Moose". (doy)
387 * Native Trait delegations are now all generated as inline code. This should
388 be much faster than the previous method of delegation. In the best case,
389 native trait methods will be very highly optimized.
391 * Reinitializing a metaclass no longer removes the existing method and
392 attribute objects (it instead fixes them so they are correct for the
393 reinitialized metaclass). This should make the order of loading many
394 MooseX modules less of an issue. (doy)
396 * The Moose::Manual docs have been revised and updated. (Dave Rolsky)
400 * If an attribute was weak, setting it to a non-ref value after the object
401 was constructed caused an error. Now we only call weaken when the new
402 value is a reference.
404 * t/040_type_constraints/036_match_type_operator.t failed on 5.13.5+. Fixed
405 based on a patch from Andreas Koenig.
407 1.14 Tue, Sep 21, 2010
411 * Work around what looks like a bug in List::MoreUtils::any. This bug caused
412 a weird error when defining the same union type twice, but only when using
413 MooseX::Types. Reported by Curtis Jewell. RT #61001. (Dave Rolsky)
415 1.13 Mon, Sep 13, 2010
419 * The deprecation warnings for alias and excludes are back, use -alias and
420 -excludes instead. (Dave Rolsky)
424 * When composing one role into another and there is an attribute conflict,
425 the error message now includes the attribute name. Reported by Sam
426 Graham. RT #59985. (Dave Rolsky)
428 * When a class is made immutable, the does_role method is overridden with a
429 much faster version that simply looks role names up in a hash. Code which
430 uses lots of role-based type constraints should be faster. (Dave Rolsky)
432 1.12 Sat, Aug 28, 2010
436 * Fix the MANIFEST. Fixes RT #60831, reported by Alberto Simões.
438 1.11 Fri, Aug 27, 2010
442 * An attribute in a subclass can now override the value of "is". (doy)
444 * The deprecation warnings for alias and excludes have been turned back off
445 for this release, to give other module authors a chance to tweak their
450 * mro::get_linear_isa was being called as a function rather than a method,
451 which caused problems with Perl 5.8.x. (t0m)
453 * Union types always created a type constraint, even if their constituent
454 constraints did not have any coercions. This bogus coercion always
455 returned undef, which meant that a union which included Undef as a member
456 always coerced bad values to undef. Reported by Eric Brine. RT
457 #58411. (Dave Rolsky)
459 * Union types with coercions would always fall back to coercing the value to
460 undef (unintentionally). Now if all the coercions for a union type fail,
461 the value returned by the coercion is the original value that we attempted
462 to coerce. (Dave Rolsky).
464 1.10 Sun, Aug 22, 2010
468 * The long-deprecated alias and excludes options for role applications now
469 issue a deprecation warning. Use -alias and -excludes instead. (Dave
474 * Inlined code no longer stringifies numeric attribute defaults. (vg, doy)
476 * default => undef now works properly. (doy)
478 * Enum type constraints now throw errors if their values are nonsensical.
483 * Optimizations that should help speed up compilation time (Dave Rolsky).
485 1.09 Tue, Jul 25, 2010
489 * You can no longer pass "coerce => 1" for an attribute unless its type
490 constraint has a coercion defined. Doing so will issue a deprecation
491 warning. (Dave Rolsky)
493 * Previously, '+foo' only allowed a specific set of options to be
494 overridden, which made it impossible to change attribute options related
495 to extensions. Now we blacklist some options, and anything else is
496 allowed. (doy, Tuomas Jormola)
498 * Most features which have been declared deprecated now issue a warning using
499 Moose::Deprecated. Warnings are issued once per calling package, not
500 repeatedly. See Moose::Deprecated for information on how you can shut
501 these warnings up entirely. Note that deprecated features will eventually
502 be removed, so shutting up the warnings may not be the best idea. (Dave
505 * Removed the long-deprecated Moose::Meta::Role->alias_method method. (Dave
510 * We no longer unimport strict and warnings when Moose, Moose::Role, or
511 Moose::Exporter are unimported. Doing this was broken if the user
512 explicitly loaded strict and warnings themself, and the results could be
513 generally surprising. We decided that it was best to err on the side of
514 safety and leave these on. Reported by David Wheeler. RT #58310. (Dave
517 * New with_traits helper function in Moose::Util. (doy)
521 * Accessors will no longer be inlined if the instance metaclass isn't
524 * Use Perl 5.10's new recursive regex features, if possible, for the type
525 constraint parser. (doy, nothingmuch)
529 * Attributes now warn if their accessors overwrite a locally defined
530 function (not just method). (doy)
534 * Bump our required perl version to 5.8.3, since earlier versions fail tests
535 and aren't easily installable/testable.
537 1.08 Tue, Jun 15, 2010
541 * Refactored a small amount of Moose::Meta::Method::Constructor to allow it
542 to be overridden more easily (doy).
544 1.07 Sat, Jun 05, 2010
548 * Fixed a minor metaclass compatibility fixing bug dealing with immutable
549 classes and non-class metaclass traits (doy, dougdude).
551 1.06 Tue, Jun 01, 2010
555 * Added '0+' overloading in Moose::Meta::TypeConstraint so that we can
556 more uniformly compare type constraints between 'classic' Moose type
557 constraints and MooseX::Types based type constraints.
559 1.05 Thu, May 20, 2010
563 * Packages and modules no longer have methods - this functionality was
564 moved back up into Moose::Meta::Class and Moose::Meta::Role individually
565 (through the Class::MOP::Mixin::HasMethods mixin) (doy).
567 * BUILDALL is now called by Moose::Meta::Class::new_object, rather than by
568 Moose::Object::new. (doy)
572 * strict and warnings are now unimported when Moose, Moose::Role, or
573 Moose::Exporter are unimported. (doy, Adam Kennedy)
575 * Added a 'consumers' method to Moose::Meta::Role for finding all
576 classes/roles which consume the given role. (doy)
580 * Fix has '+attr' in Roles to explode immediately, rather than when the role
581 is applied to a class (t0m).
583 * Fix type constraint validation messages to not include the string 'failed'
584 twice in the same sentence (Florian Ragwitz).
586 * New type constraints will default to being unequal, rather than equal
589 * The tests no longer check for perl's behavior of clobbering $@, which has
590 been fixed in perl-5.13.1 (Florian Ragwitz).
592 * Metaclass compatibility fixing has been completely rewritten, and should
593 be much more robust. (doy)
595 1.04 Thu, May 20, 2010
597 * This release was broken and has been deleted from CPAN shortly after its
600 1.03 Thu, May 06, 2010
604 * Allow specifying required versions when setting superclasses or applying
605 roles (Florian Ragwitz).
607 1.02 Sat, May 01, 2010
611 * Stop the natatime method provided by the native Array trait from returning
612 an exhausted iterator when being called with a callback. (Florian Ragwitz)
614 * Make Moose::Meta::TypeConstraint::Class correctly reject RegexpRefs.
617 * Calling is_subtype_of on a Moose::Meta::TypeConstraint::Class with itself or
618 the class the TC represents as an argument incorrectly returned true. This
619 behavior is correct for is_type_of, not is_subtype_of. (Guillermo Roditi)
621 * Use File::Temp for temp files created during tests. Previously, files were
622 written to the t/ dir, which could cause problems of the user running the
623 tests did not have write access to that directory.. (Chris Weyl, Ævar
624 Arnfjörð Bjarmason)
626 * Pass role arguments along when applying roles to instances. (doy, lsm)
628 1.01 Fri, Mar 26, 2010
632 * The handles option now also accepts a role type constraint in addition to a
633 plain role name. (Florian Ragwitz)
637 * Record the Sartak/doy debt properly in Changes (perigrin)
639 1.00 Tue, Mar 25, 2010
643 * Moose::Meta::Attribute::Native::Trait::Code no longer creates reader
644 methods by default. (Florian Ragwitz)
648 * Improve various parts of the documentation and fix many typos.
649 (Dave Rolsky, Mateu Hunter, Graham Knop, Robin V, Jay Hannah, Jesse Luehrs)
653 * Paid the $10 debt to doy from 0.80 Sat, Jun 6, 2009 (Sartak)
655 0.99 Mon, Mar 8, 2010
659 * New method find_type_for in Moose::Meta::TypeConstraint::Union, for finding
660 which member of the union a given value validates for. (Cory Watson)
664 * DEMOLISH methods in mutable subclasses of immutable classes are now called
665 properly (Chia-liang Kao, Jesse Luehrs)
669 * Added Moose::Manual::Support that defines the support, compatiblity, and
670 release policies for Moose. (Chris Prather)
672 0.98 Wed, Feb 10, 2010
676 * An internals change in 0.97 broke role application to an instance in some
677 cases. The bug occurred when two different roles were applied to different
678 instances of the same class. (Rafael Kitover)
681 0.97 Tue, Feb 9, 2010
685 * Calling ->reinitialize on a cached anonymous class effectively uncached
686 the metaclass object, causing the metaclass to go out of scope
687 unexpectedly. This could easily happen at a distance by applying a
688 metarole to an anonymous class. (Dave Rolsky).
690 0.96 Sat, Feb 6, 2010
694 * ScalarRef is now a parameterized type. You can now specify a type
695 constraint for whatever the reference points to. (Closes RT#50857)
696 (Michael G. Schwern, Florian Ragwitz)
700 * ScalarRef now accepts references to other references. (Closes RT#50934)
703 0.95 Thu, Feb 4, 2010
707 * Moose::Meta::Attribute::Native::Trait::Code now provides execute_method as
708 a delegation option. This allows the code reference to be called as a
709 method on the object. (Florian Ragwitz)
713 * Moose::Object::does no longer checks the entire inheritance tree, since
714 Moose::Meta::Class::does_role already does this. (doy)
716 * Moose::Util::add_method_modifier (and subsequently the sugar functions
717 Moose::before, Moose::after, and Moose::around) can now accept arrayrefs,
718 with the same behavior as lists. Types other than arrayref and regexp
719 result in an error. (Dylan Hardison)
721 0.94 Mon, Jan 18, 2010
725 * Please see the changes listed for 0.93_01 and Moose::Manual::Delta.
729 * Improved support for anonymous roles by changing various APIs to take
730 Moose::Meta::Role objects as well as role names. This included
732 - Moose::Meta::Class->does_role
733 - Moose::Meta::Role->does_role
734 - Moose::Util::does_role
735 - Moose::Util::apply_all_roles
736 - Moose::Util::ensure_all_roles
737 - Moose::Util::search_class_by_role
739 Requested by Shawn Moore. Addresses RT #51143 (and then some). (Dave Rolsky)
743 * Fix handling of non-alphanumeric attributes names like '@foo'. This should
744 work as long as the accessor method names are explicitly set to valid Perl
745 method names. Reported by Doug Treder. RT #53731. (Dave Rolsky)
748 0.93_03 Tue, Jan 5, 2010
752 * Portability fixes to our XS code so we compile with 5.8.8 and Visual
753 C++. Fixes RT #53391. Reported by Taro Nishino. (rafl)
756 0.93_02 Tue, Jan 5, 2010
760 * Depend on Class::MOP 0.97_01 so we can get useful results from CPAN
761 testers. (Dave Rolsky)
764 0.93_01 Mon, Jan 4, 2010
768 See Moose::Manual::Delta for more details on backwards compatiblity issues.
770 * Role attributes are now objects of the Moose::Meta::Role::Attribute
771 class. (Dave Rolsky).
773 * There were major changes to how metaroles are applied. We now distinguish
774 between metaroles for classes vs those for roles. See the
775 Moose::Util::MetaRole docs for details. (Dave Rolsky)
777 * The old MetaRole API has been deprecated, but will continue to
778 work. However, if you are applying an attribute metaclass role, this may
779 break because of the fact that roles now have an attribute metaclass
782 * Moose::Util::MetaRole::apply_metaclass_roles is now called
783 apply_metaroles. The old name is deprecated. (Dave Rolsky)
785 * The unimport subs created by Moose::Exporter now clean up re-exported
786 functions like blessed and confess, unless the caller imported them from
787 somewhere else too. See Moose::Manua::Delta for backcompat details. (rafl)
789 [ENHANCEMENTS AND BUG FIXES]
791 * Changed the Str constraint to accept magic lvalue strings like one gets from
792 substr et al, again. (sorear)
794 * Sped up the type constraint parsing regex. (Sam Vilain)
796 * The Moose::Cookbook::Extending::Recipe2 recipe was broken. Fix suggested by
799 * Added Moose::Util::TypeConstraints exports when using oose.pm to allow
800 easier testing of TypeConstraints from the command line. (perigrin)
802 * Added a with_immutable test function to Test::Moose, to run a block of tests
803 with and without certain classes being immutable. (doy)
805 * We now use Module::Install extensions explicitly to avoid confusing errors
806 if they're not installed. We use Module::Install::AuthorRequires to stop
807 test extraction and general failures if you don't have the author side
808 dependencies installed.
810 * Fixed a grammar error in Moose::Cookbook::Basics::Recipe4. rt.cpan.org
811 #51791. (Amir E. Aharoni)
814 0.93 Thu, Nov 19, 2009
816 - Calling $object->new() is no longer deprecated, and no longer
820 - The get_attribute_map method is now deprecated. (Dave Rolsky)
822 * Moose::Meta::Method::Delegation
823 - Preserve variable aliasing in @_ for delegated methods, so that
824 altering @_ affects the passed value. (doy)
826 * Moose::Util::TypeConstraints
827 - Allow array refs for non-anonymous form of enum and duck_type, not
828 just anonymous. The non-arrayref forms may be removed in the
830 - Changed Str constraint to not accept globs (*STDIN or *FOO). (chansen)
831 - Properly document Int being a subtype of Str. (doy)
834 - Moose::Exporter using modules can now export their functions to the
835 main package. This applied to Moose and Moose::Role, among
836 others. (nothingmuch)
838 * Moose::Meta::Attribute
839 - Don't remove attribute accessors we never installed, during
840 remove_accessors. (doy)
842 * Moose::Meta::Attribute::Native::Trait::Array
843 - Don't bypass prototype checking when calling List::Util::first, to
844 avoid a segfault when it is called with a non-code argument. (doy)
846 * Moose::Meta::Attribute::Native::Trait::Code
847 - Fix passing arguments to code execute helpers. (doy)
849 0.92 Tue, Sep 22, 2009
850 * Moose::Util::TypeConstraints
851 - added the match_on_type operator (Stevan)
852 - added tests and docs for this (Stevan)
855 - Metaclass compat fixing should already happen recursively, there's no
856 need to explicitly walk up the inheritance tree. (doy)
858 * Moose::Meta::Attribute
859 - Add tests for set_raw_value and get_raw_value. (nothingmuch)
861 0.91 Thu, Sep 17, 2009
863 - Don't import any functions, in order to avoid polluting our namespace
864 with things that can look like methods (blessed, try, etc)
867 * Moose::Meta::Method::Constructor
868 - The generated code needs to called Scalar::Util::blessed by its
869 fully-qualified name or else Perl can interpret the call to blessed as
870 an indirect method call. This broke Search::GIN, which in turn broke
871 KiokuDB. (nothingmuch)
873 0.90 Tue, Sep 15, 2009
874 * Moose::Meta::Attribute::Native::Trait::Counter
875 * Moose::Meta::Attribute::Native::Trait::String
876 - For these two traits, an attribute which did not explicitly provide
877 methods to handles magically ended up delegating *all* the helper
878 methods. This has been removed. You must be explicit in your handles
879 declaration for all Native Traits. (Dave Rolsky)
882 - DEMOLISHALL behavior has changed. If any DEMOLISH method dies, we make
883 sure to rethrow its error message. However, we also localize $@ before
884 this so that if all the DEMOLISH methods success, the value of $@ will
885 be preserved. (nothingmuch and Dave Rolsky)
886 - We now also localize $? during object destruction. (nothingmuch and
888 - The handling of DEMOLISH methods was broken for immutablized classes,
889 which were not receiving the value of
890 Devel::GlobalDestruction::in_global_destruction.
891 - These two fixes address some of RT #48271, reported by Zefram.
892 - This is all now documented in Moose::Manual::Construction.
893 - Calling $object->new() is now deprecated. A warning will be
897 - Added more hooks to customize how roles are applied. The role
898 summation class, used to create composite roles, can now be changed
899 and/or have meta-roles applied to it. (rafl)
900 - The get_method_list method no longer explicitly excludes the "meta"
901 method. This was a hack that has been replaced by better hacks. (Dave
904 * Moose::Meta::Method::Delegation
905 - fixed delegated methods to make sure that any modifiers attached to
906 the accessor being delegated on will be called (Stevan)
907 - added tests for this (Stevan)
910 - Moose no longer warns when a class that is being made immutable has
911 mutable ancestors. While in theory this is a good thing to warn about,
912 we found so many exceptions to this that doing this properly became
915 0.89_02 Thu, Sep 10, 2009
916 * Moose::Meta::Attribute::Native
917 - Fix Hash, which still had 'empty' instead of 'is_empty'. (hdp)
919 * Moose::Meta::Attribute::Native::Trait::Array
920 - Added a number of functions from List::Util and List::MoreUtils,
921 including reduce, shuffle, uniq, and natatime. (doy)
924 - This module will now generate an init_meta method for your exporting
925 class if you pass it options for
926 Moose::Util::MetaRole::apply_metaclass_roles or
927 apply_base_class_roles. This eliminates a lot of repetitive
928 boilerplate for typical MooseX modules. (doy).
929 - Documented the with_meta feature, which is a replacement for
930 with_caller. This feature was added by josh a while ago.
931 - The with_caller feature is now deprecated, but will not issue a
932 warning yet. (Dave Rolsky)
933 - If you try to wrap/export a subroutine which doesn't actually exist,
934 Moose::Exporter will warn you about this. (doy)
936 * Moose::Meta::Role::Application::ToRole
937 - When a role aliased a method from another role, it was only getting
938 the new (aliased) name, not the original name. This differed from what
939 happens when a class aliases a role's methods. If you _only_ want the
940 aliased name, make sure to also exclue the original name. (Dave
943 0.89_01 Wed Sep 2, 2009
944 * Moose::Meta::Attribute
945 - Added the currying syntax for delegation from AttributeHelpers to the
946 existing delegation API. (hdp)
948 * Moose::Meta::Attribute::Native
949 - We have merged the functionality of MooseX::AttributeHelpers into the
950 Moose core with some API tweaks. You can continue to use
951 MooseX::AttributeHelpers, but it will not be maintained except
952 (perhaps) for critical bug fixes in the future. See
953 Moose::Manual::Delta for details. (hdp, jhannah, rbuels, Sartak,
956 * Moose::Error::Croak
957 * Moose::Error::Confess
958 - Clarify documentation on how to use different error-throwing
959 modules. (Curtis Jewell)
962 - Correct POD for builder to point to Recipe8, not 9. (gphat)
965 - When a nonexistent sub name is passed to as_is, with_caller, or
966 with_meta, throw a warning and skip the exporting, rather than
967 installing a broken sub. (doy)
970 - Moose now warns if you call C<make_immutable> for a class with mutable
973 0.89 Thu Aug 13, 2009
974 * Moose::Manual::Attributes
975 - Clarify "is", include discussion of "bare". (Sartak)
977 * Moose::Meta::Role::Method::Conflicting
978 * Moose::Meta::Role::Application::ToClass
979 - For the first set of roles involved in a conflict, report all
980 unresolved method conflicts, not just the first method. Fixes #47210
981 reported by Ovid. (Sartak)
983 * Moose::Meta::TypeConstraint
984 - Add assert_valid method to use a TypeConstraint for assertion (rjbs)
987 - Make "use Moose -metaclass => 'Foo'" do alias resolution, like -traits
989 - Allow specifying role options (alias, excludes, MXRP stuff) in the
990 arrayref passed to "use Moose -traits" (doy)
993 - Add functions meta_class_alias and meta_attribute_alias for creating
994 aliases for class and attribute metaclasses and metatraits. (doy)
996 * Moose::Meta::Attribute
997 * Moose::Meta::Method::Accessor
998 - A trigger now receives the old value as a second argument, if the
999 attribute had one. (Dave Rolsky)
1001 * Moose::Meta::Method::Constructor
1002 - Fix a bug with $obj->new when $obj has stringify overloading.
1003 Reported by Andrew Suffield [rt.cpan.org #47882] (Sartak)
1004 - However, we will probably deprecate $obj->new, so please don't start
1005 using it for new code!
1007 * Moose::Meta::Role::Application
1008 * Moose::Meta::Role::Application::RoleSummation
1009 - Rename alias and excludes to -alias and -excludes (but keep the old
1010 names for now, for backcompat) (doy)
1012 0.88 Fri Jul 24, 2009
1013 * Moose::Manual::Contributing
1014 - Re-write the Moose::Manual::Contributing document to reflect
1015 the new layout and methods of work for the Git repository. All
1016 work now should be done in topic branches and reviewed by a
1017 core committer before being applied to master. All releases
1018 are done by a cabal member and merged from master to
1019 stable. This plan was devised by Yuval, blame him. (perigrin)
1022 - Create metaclass attributes for the different role application
1025 * Moose::Util::MetaRole
1026 - Allow applying roles to a meta role's role application
1029 * Moose::Meta::Attribute
1030 - Add weak_ref to allowed options for "has '+foo'" (mst)
1032 * Moose::Meta::Method::Accessor
1033 - No longer uses inline_slot_access in accessors, to support
1034 non-lvalue-based meta instances. (sorear)
1036 0.87 Tue Jul 7, 2009
1037 * Moose::Meta::Method::Delegation
1038 - Once again allow class names as well as objects for
1039 delegation. This was changed in 0.86.
1041 0.86 Fri Jul 3, 2009
1042 * Moose::Meta::Class::Immutable::Trait
1043 - Fixes to work with the latest Class::MOP.
1045 * Moose::Meta::Method::Delegation
1046 - Delegation now dies with a more useful error message if the
1047 attribute's accessor returns something defined but
1050 0.85 Fri, Jun 26, 2009
1051 * Moose::Meta::Attribute
1052 - The warning for 'no associated methods' is now split out into
1053 the _check_associated_methods method, so that extensions can
1054 safely call 'after install_accessors => ...'. This fixes a
1055 warning from MooseX::AttributeHelpers. (hdp)
1057 0.84 Fri, Jun 26, 2009
1059 - has now sets definition_context for attributes defined in
1062 * Moose::Meta::Attribute
1063 - When adding an attribute to a metaclass, if the attribute has
1064 no associated methods, it will give a deprecation
1066 - Methods generated by delegation were not being added to
1067 associated_methods. (hdp)
1068 - Attribute accessors (reader, writer, accessor, predicate,
1069 clearer) now warn if they overwrite an existing method. (doy)
1070 - Attribute constructors now warn very noisily about unknown (or
1071 misspelled) arguments
1073 * Moose::Util::TypeConstraints
1074 - Deprecated the totally useless Role type name, which just
1075 checked if $object->can('does'). Note that this is _not_ the
1076 same as a type created by calling role_type('RoleName').
1078 * Moose::Util::TypeConstraints
1079 * Moose::Meta::TypeConstraint::DuckType
1080 - Reify duck type from a regular subtype into an actual class
1082 - Document this because Sartak did all my work for me
1085 * Moose::Meta::Attribute
1086 - Allow Moose::Meta::TypeConstraint::DuckType in handles, since
1087 it is just a list of methods (Sartak)
1090 - The get_*_method_modifiers methods would die if the role had
1091 no modifiers of the given type (Robert Buels).
1093 0.83 Tue, Jun 23, 2009
1094 * Moose::Meta::Class
1095 - Fix _construct_instance not setting the special __MOP__ object
1096 key in instances of anon classes. (doy)
1098 0.82 Sun, Jun 21, 2009
1099 * Moose::Manual::Types
1100 - Mention MooseX::Types early to avoid users falling down the
1101 string parsing rathole (mst)
1103 * Moose::Manual::MooseX
1104 - Add warnings about class-level extensions and mention considering
1105 using plain objects instead
1107 0.81 Sun, Jun 7, 2009
1108 * Bumped our Class::MOP prereq to the latest version (0.85), since
1109 that's what we need.
1111 0.80 Sat, Jun 6, 2009
1112 * Moose::Manual::FAQ
1113 - Add FAQ about the coercion change from 0.76 because it came up
1114 three times today (perigrin)
1115 - Win doy $10 dollars because Sartak didn't think anybody
1116 would document this fast enough (perigrin)
1118 * Moose::Meta::Method::Destructor
1119 - Inline a DESTROY method even if there are no DEMOLISH methods
1120 to prevent unnecessary introspection in
1121 Moose::Object::DEMOLISHALL
1124 - A role's required methods are now represented by
1125 Moose::Meta::Role::Method::Required objects. Conflicts are now
1126 represented by Moose::Meta::Role::Method::Conflicting
1127 objects. The benefit for end-users in that unresolved
1128 conflicts generate different, more instructive, errors,
1129 resolving Ovid's #44895. (Sartak)
1132 - Improve the error message of "extends" as suggested by Adam
1133 Kennedy and confound (Sartak)
1134 - Link to Moose::Manual::Roles from Moose::Role as we now have
1135 excellent documentation (Adam Kennedy)
1138 - Update test suite for subname change in Class::MOP
1140 - Add TODO test for infinite recursion in Moose::Meta::Class
1143 0.79 Wed, May 13, 2009
1145 - More fixes for Win32 problems. Reported by Robert Krimen.
1148 - The DEMOLISHALL method could still blow up in some cases
1149 during global destruction. This method has been made more
1150 resilient in the face of global destruction's random garbage
1154 - If you "also" a module that isn't loaded, the error message
1155 now acknowledges that (Sartak)
1158 - When your ->meta method does not return a Moose::Meta::Class,
1159 the error message gave the wrong output (Sartak)
1161 0.78 Tue, May 12, 2009
1162 * Moose::Cookbook::FAQ and Moose::Cookbook::WTF
1163 - Merged these documents into what is now Moose::Manual::FAQ
1165 * Moose::Unsweetened
1166 - Moved to Moose::Manual::Unsweetened
1168 * Moose::Cookbook::Basics::Recipes 9-12
1169 - Renamed to be 8-11, since recipe 8 did not exist
1172 - Make Moose::Exporter import strict and warnings into packages
1176 - Fix DEMOLISHALL sometimes not being able to find DEMOLISH
1177 methods during global destruction (doy)
1179 * Moose::Meta::Class
1180 * Moose::Meta::Role::Application::ToClass
1181 - Track the Role::Application objects created during class-role
1182 consumption (Sartak)
1184 * Moose::Meta::Class
1185 - Fix metaclass incompatibility errors when extending a vanilla perl
1186 class which isa Moose class with a metaclass role applied (t0m)
1189 - Add a role-combination hook, _role_for_combination, for the
1190 benefit of MooseX::Role::Parameterized (Sartak)
1193 - Some tests were failing on Win32 because they explicit checked
1194 warning output for newlines. Reported by Nickolay Platonov.
1196 0.77 Sat, May 2, 2009
1198 - Add explicit use of Devel::GlobalDestruction and Sub::Name
1202 - Pass a boolean to DEMOLISHALL and DEMOLISH indicating whether
1203 or not we are currently in global destruction (doy)
1204 - Add explicit use of Devel::GlobalDestruction and Sub::Name
1207 * Moose::Cookbook::FAQ
1208 - Reworked much of the existing content to be more useful to
1209 modern Moose hackers (Sartak)
1212 - Depend on Class::MOP 0.83 instead of 0.82_01.
1214 0.76 Mon, April 27, 2009
1215 * Moose::Meta::TypeConstraint
1216 - Do not run coercions in coerce() if the value already passes the type
1219 * Moose::Meta::TypeConstraint::Class
1220 - In validation error messages, specifically say that the value is not
1221 an instance of the class. This should alleviate some frustrating
1222 forgot-to-load-my-type bugs. rt.cpan.org #44639 (Sartak)
1224 * Moose::Meta::Role::Application::ToClass
1225 - Revert the class-overrides-role warning in favor of a solution outside
1226 of the Moose core (Sartak)
1229 - Make Test::Output optional again, since it's only used in a few files
1232 0.75_01 Thu, April 23, 2009
1233 * Moose::Meta::Role::Application::ToClass
1234 - Moose now warns about each class overriding methods from roles it
1238 - Warnings tests have standardized on Test::Output which is now an
1239 unconditionally dependency (Sartak)
1241 * Moose::Meta::Class
1242 - Changes to immutabilization to work with Class::MOP 0.82_01+.
1244 0.75 Mon, April 20, 2009
1246 * Moose::Meta::Class
1247 - Move validation of not inheriting from roles from Moose::extends to
1248 Moose::Meta::Class::superclasses (doy)
1251 - add ensure_all_roles() function to encapsulate the common "apply this
1252 role unless the object already does it" pattern (hdp)
1255 - Users can now select a different metaclass with the "-metaclass"
1256 option to import, for classes and roles (Sartak)
1259 - Make method_metaclass an attr so that it can accept a metarole
1262 0.74 Tue, April 7, 2009
1264 * Moose::Meta::Method::Destructor
1265 - Include stack traces in the deprecation warnings.
1268 * Moose::Meta::Class
1269 - Removed the long-deprecated _apply_all_roles method.
1271 * Moose::Meta::TypeConstraint
1272 - Removed the long-deprecated union method.
1275 0.73_02 Mon, April 6, 2009
1276 * More deprecations and renamings
1277 - Moose::Meta::Method::Constructor
1278 - initialize_body => _initialize_body (this is always called
1279 when an object is constructed)
1282 - The DEMOLISHALL method could throw an exception during global
1283 destruction, meaning that your class's DEMOLISH methods would
1284 not be properly called. Reported by t0m.
1286 * Moose::Meta::Method::Destructor
1287 - Destructor inlining was totally broken by the change to the
1288 is_needed method in 0.72_01. Now there is a test for this
1289 feature, and it works again.
1292 - Bold the word 'not' in the POD for find_meta (t0m)
1294 0.73_01 Sun, April 5, 2009
1296 - Call user_class->meta in fewer places, with the eventual goal
1297 of allowing the user to rename or exclude ->meta
1298 altogether. Instead uses Class::MOP::class_of. (Sartak)
1300 * Moose::Meta::Method::Accessor
1301 - If an attribute had a lazy default, and that value did not
1302 pass the attribute's type constraint, it did not get the
1303 message from the type constraint, instead using a generic
1304 message. Test provided by perigrin.
1306 * Moose::Util::TypeConstraints
1307 - Add duck_type keyword. It's sugar over making sure an object
1308 can() a list of methods. This is easier than jrockway's
1309 suggestion to fork all of CPAN. (perigrin)
1310 - add tests and documentation (perigrin)
1313 - Document the fact that init_meta() returns the target class's
1314 metaclass object. (hdp)
1316 * Moose::Cookbook::Extending::Recipe1
1317 * Moose::Cookbook::Extending::Recipe2
1318 * Moose::Cookbook::Extending::Recipe3
1319 * Moose::Cookbook::Extending::Recipe4
1320 - Make init_meta() examples explicitly return the metaclass and
1321 point out this fact. (hdp)
1323 * Moose::Cookbook::Basics::Recipe12
1324 - A new recipe, creating a custom meta-method class.
1326 * Moose::Cookbook::Meta::Recipe6
1327 - A new recipe, creating a custom meta-method class.
1329 * Moose::Meta::Class
1330 * Moose::Meta::Method::Constructor
1331 - Attribute triggers no longer receive the meta-attribute object
1332 as an argument in any circumstance. Previously, triggers
1333 called during instance construction were passed the
1334 meta-attribute, but triggers called by normal accessors were
1335 not. Fixes RT#44429, reported by Mark Swayne. (hdp)
1337 * Moose::Manual::Attributes
1338 - Remove references to triggers receving the meta-attribute object as an
1341 * Moose::Cookbook::FAQ
1342 - Remove recommendation for deprecated Moose::Policy and
1343 Moose::Policy::FollowPBP; recommend MooseX::FollowPBP
1346 * Many methods have been renamed with a leading underscore, and a
1347 few have been deprecated entirely. The methods with a leading
1348 underscore are consider "internals only". People writing
1349 subclasses or extensions to Moose should feel free to override
1350 them, but they are not for "public" use.
1352 - Moose::Meta::Class
1353 - check_metaclass_compatibility => _check_metaclass_compatibility
1355 - Moose::Meta::Method::Accessor
1356 - initialize_body => _initialize_body (this is always called
1357 when an object is constructed)
1358 - /(generate_.*_method(?:_inline)?)/ => '_' . $1
1360 - Moose::Meta::Method::Constructor
1361 - initialize_body => _initialize_body (this is always called
1362 when an object is constructed)
1363 - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
1364 - attributes => _attributes (now inherited from parent)
1365 - meta_instance => _meta_instance (now inherited from parent)
1368 - alias_method is deprecated. Use add_method
1370 0.73 Fri, March 29, 2009
1371 * No changes from 0.72_01.
1373 0.72_01 Thu, March 26, 2009
1375 - Almost every module has complete API documentation. A few
1376 methods (and even whole classes) have been intentionally
1377 excluded pending some rethinking of their APIs.
1379 * Moose::Util::TypeConstraints
1380 - Calling subtype with a name as the only argument is now an
1381 exception. If you want an anonymous subtype do:
1383 my $subtype = subtype as 'Foo';
1385 * Moose::Cookbook::Meta::Recipe7
1386 - A new recipe, creating a custom meta-instance class.
1388 * Moose::Cookbook::Basics::Recipe5
1389 - Fix various typos and mistakes. Includes a patch from Radu
1392 * Moose::Cookbook::Basics::Recipe9
1393 - Link to this recipe from Moose.pm's builder blurb
1396 - When wrapping a function with a prototype, Moose::Exporter now
1397 makes sure the wrapped function still has the same
1398 prototype. (Daisuke Maki)
1400 * Moose::Meta::Attribute
1401 - Allow a subclass to set lazy_build for an inherited
1405 - Explicitly depend on Data::OptList. We already had this dependency
1406 via Sub::Exporter, but since we're using it directly we're
1407 better off with it listed. (Sartak)
1409 * Moose::Meta::Method::Constructor
1410 - Make it easier to subclass the inlining behaviour. (Ash
1413 * Moose::Manual::Delta
1414 - Details significant changes in the history of Moose, along
1415 with recommended workarounds.
1417 * Moose::Manual::Contributing
1418 - Contributor's guide to Moose.
1420 * Moose::Meta::Method::Constructor
1421 - The long-deprecated intialize_body method has been removed
1422 (yes, spelled like that).
1424 * Moose::Meta::Method::Destructor
1425 - This is_needed method is now always a class method.
1427 * Moose::Meta::Class
1428 - Changes to the internals of how make_immutable works to match
1429 changes in latest Class::MOP.
1431 0.72 Mon, February 23, 2009
1433 * Moose::Meta::Method::Constructor
1434 - A mutable class accepted Foo->new(undef) without complaint,
1435 while an immutable class would blow up with an unhelpful
1436 error. Now, in both cases we throw a helpful error
1437 instead. Reported by doy.
1439 0.71_01 Sun, February 22, 2009
1441 - Hopefully fixed some POD errors in a few recipes that caused
1442 them to display weird on search.cpan.org.
1444 * Moose::Util::TypeConstraints
1445 - Calling type or subtype without the sugar helpers (as, where,
1446 message) is now deprecated.
1447 - The subtype function tried hard to guess what you meant, but
1448 often got it wrong. For example:
1450 my $subtype = subtype as 'ArrayRef[Object]';
1452 This caused an error in the past, but now works as you'd
1456 - Make sure Moose.pm is loaded before calling
1457 Moose->throw_error. This wasn't normally an issue, but could
1458 bite you in weird cases.
1460 0.71 Thu, February 19, 2009
1461 * Moose::Cookbook::Basics::Recipe11
1462 - A new recipe which demonstrates the use of BUILDARGS and
1463 BUILD. (Dave Rolsky)
1465 * Moose::Cookbook::Roles::Recipe3
1466 - A new recipe, applying a role to an object instance. (Dave
1470 - Allow overriding specific keywords from "also" packages. (doy)
1473 - Replace hardcoded cookbook tests with Test::Inline to ensure
1474 the tests match the actual code in the recipes. (Dave Rolsky)
1477 - Working on the above turned up a number of little bugs in the
1478 recipe code. (Dave Rolsky)
1480 * Moose::Util::TypeConstraints::Optimized
1481 - Just use Class::MOP for the optimized ClassName check. (Dave
1484 0.70 Sat, February 14, 2009
1485 * Moose::Util::TypeConstraints
1486 - Added the RoleName type (stevan)
1487 - added tests for this (stevan)
1489 * Moose::Cookbook::Basics::Recipe3
1490 - Updated the before qw[left right] sub to be a little more
1491 defensive about what it accepts (stevan)
1492 - added more tests to t/000_recipies/basics/003_binary_tree.t
1496 - We now always call DEMOLISHALL, even if a class does not
1497 define DEMOLISH. This makes sure that method modifiers on
1498 DEMOLISHALL work as expected. (doy)
1499 - added tests for this (EvanCarroll)
1501 * Moose::Util::MetaRole
1502 - Accept roles for the wrapped_method_metaclass (rafl)
1503 - added tests for this (rafl)
1505 * Moose::Meta::Attribute
1506 - We no longer pass the meta-attribute object as a final
1507 argument to triggers. This actually changed for inlined code a
1508 while back, but the non-inlined version and the docs were
1512 - Some tests tried to use Test::Warn 0.10, which had bugs. Now
1513 they require 0.11. (Dave Rolsky)
1516 - Lots of small changes to the manual, cookbook, and
1517 elsewhere. These were based on feedback from various
1518 users, too many to list here. (Dave Rolsky)
1520 0.69 Thu, February 12, 2009
1522 - Make some keyword errors use throw_error instead of croak
1523 since Moose::Exporter wraps keywords now (Sartak)
1525 * Moose::Cookbook::*
1526 - Revised every recipe for style and clarity. Also moved some
1527 documentation out of cookbook recipes and into Moose::Manual
1528 pages. This work was funded as part of the Moose docs grant
1529 from TPF. (Dave Rolsky)
1531 * Moose::Meta::Method::Delegation
1532 - If the attribute doing the delegation was not populated, the
1533 error message did not specify the attribute name
1536 0.68 Wed, February 4, 2009
1538 - Many spelling, typo, and formatting fixes by daxim.
1540 * Moose::Manual::Attributes
1541 - The NAME section in the POD used "Attribute" so search.cpan
1542 didn't resolve links from other documents properly.
1544 * Moose::Meta::Method::Overriden
1545 - Now properly spelled as Overridden. Thanks to daxim for
1548 0.67 Tue, February 3, 2009
1550 - Lots of little typo fixes and a few clarifications. Several
1551 pages didn't have proper titles, and so weren't actually
1552 visible on search.cpan.org. Thanks to hanekomu for a variety
1553 of fixes and formatting improvements.
1555 0.66 Tue, February 3, 2009
1557 - This is a brand new, extensive manual for Moose. This aims to
1558 provide a complete introduction to all of Moose's
1559 features. This work was funded as part of the Moose docs grant
1560 from TPF. (Dave Rolsky)
1562 * Moose::Meta::Attribute
1563 - Added a delegation_metaclass method to replace a hard-coded
1564 use of Moose::Meta::Method::Delegation. (Dave Rolsky)
1566 * Moose::Util::TypeConstraints
1567 - If you created a subtype and passed a parent that Moose didn't
1568 know about, it simply ignored the parent. Now it automatically
1569 creates the parent as a class type. This may not be what you
1570 want, but is less broken than before. (Dave Rolsky)
1572 * Moose::Util::TypeConstraints
1573 - This module tried throw errors by calling Moose->throw_error,
1574 but it did not ensure that Moose was loaded first. This could
1575 cause very unhelpful errors when it tried to throw an error
1576 before Moose was loaded. (Dave Rolsky)
1578 * Moose::Util::TypeConstraints
1579 - You could declare a name with subtype such as "Foo!Bar" that
1580 would be allowed, but if you used it in a parameterized type
1581 such as "ArrayRef[Foo!Bar]" it wouldn't work. We now do some
1582 vetting on names created via the sugar functions, so that they
1583 can only contain alphanumerics, ":", and ".". (Dave Rolsky)
1585 0.65 Thu, January 22, 2009
1586 * Moose and Moose::Meta::Method::Overridden
1587 - If an overridden method called super(), and then the
1588 superclass's method (not overridden) _also_ called super(),
1589 Moose went into an endless recursion loop. Test provided by
1590 Chris Prather. (Dave Rolsky)
1592 * Moose::Meta::TypeConstraint
1593 - All methods are now documented. (gphat)
1595 * t/100_bugs/011_DEMOLISH_eats_exceptions.t
1596 - Fixed some bogus failures that occurred because we tried to
1597 validate filesystem paths in a very ad-hoc and
1598 not-quite-correct way. (Dave Rolsky)
1600 * Moose::Util::TypeConstraints
1601 - Added maybe_type to exports. See docs for details. (rjbs)
1604 - Added Moose::Util::TypeConstraints to the SEE ALSO
1608 - Methods created via an attribute can now fulfill a "requires"
1609 declaration for a role. (nothingmuch)
1611 * Moose::Meta::Method::*
1612 - Stack traces from inlined code will now report its line and
1613 file as being in your class, as opposed to in Moose
1614 guts. (nothingmuch).
1616 0.64 Wed, December 31, 2008
1617 * Moose::Meta::Method::Accessor
1618 - Always inline predicate and clearer methods (Sartak)
1620 * Moose::Meta::Attribute
1621 - Support for parameterized traits (Sartak)
1622 - verify_against_type_constraint method to avoid duplication
1623 and enhance extensibility (Sartak)
1625 * Moose::Meta::Class
1626 - Tests (but no support yet) for parameterized traits (Sartak)
1629 - Require Class::MOP 0.75+, which has the side effect of making
1630 sure we work on Win32. (Dave Rolsky)
1632 0.63 Mon, December 8, 2008
1633 * Moose::Unsweetened
1634 - Some small grammar tweaks and bug fixes in non-Moose example
1637 0.62_02 Fri, December 5, 2008
1638 * Moose::Meta::Role::Application::ToClass
1639 - When a class does not provide all of a role's required
1640 methods, the error thrown now mentions all of the missing
1641 methods, as opposed to just the first one found. Requested by
1642 Curtis Poe (RT #41119). (Dave Rolsky)
1644 * Moose::Meta::Method::Constructor
1645 - Moose will no longer inline a constructor for your class
1646 unless it inherits its constructor from Moose::Object, and
1647 will warn when it doesn't inline. If you want to force
1648 inlining anyway, pass "replace_constructor => 1" to
1649 make_immutable. Addresses RT #40968, reported by Jon
1650 Swartz. (Dave Rolsky)
1651 - The quoting of default values could be broken if the default
1652 contained a single quote ('). Now we use quotemeta to escape
1653 anything potentially dangerous in the defaults. (Dave Rolsky)
1655 0.62_01 Wed, December 3, 2008
1657 - use the method->execute API for BUILDALL
1658 and DEMOLISHALL (Sartak)
1660 * Moose::Util::TypeConstraints
1661 - We now make all the type constraint meta classes immutable
1662 before creating the default types provided by Moose. This
1663 should make loading Moose a little faster. (Dave Rolsky)
1665 0.62 Wed November 26, 2008
1666 * Moose::Meta::Role::Application::ToClass
1667 Moose::Meta::Role::Application::ToRole
1668 - fixed issues where excluding and aliasing the
1669 same methods for a single role did not work
1670 right (worked just fine with multiple
1672 - added test for this (stevan)
1674 * Moose::Meta::Role::Application::RoleSummation
1675 - fixed the error message when trying to compose
1676 a role with a role it excludes (Sartak)
1679 - Catch another case where recursion caused the value
1680 of $CALLER to be stamped on (t0m)
1681 - added test for this (t0m)
1684 - Remove the make_immutable keyword, which has been
1685 deprecated since April. It breaks metaclasses that
1686 use Moose without no Moose (Sartak)
1688 * Moose::Meta::Attribute
1689 - Removing an attribute from a class now also removes delegation
1690 (handles) methods installed for that attribute (t0m)
1691 - added test for this (t0m)
1693 * Moose::Meta::Method::Constructor
1694 - An attribute with a default that looked like a number (but was
1695 really a string) would accidentally be treated as a number
1696 when the constructor was made immutable (perigrin)
1697 - added test for this (perigrin)
1700 - create method for constructing a role
1701 dynamically (Sartak)
1702 - added test for this (Sartak)
1703 - anonymous roles! (Sartak)
1704 - added test for this (Sartak)
1707 - more consistent error messages (Sartak)
1709 * Moose::Cookbook::Roles::Recipe1
1710 - attempt to explain why a role that just requires
1711 methods is useful (Sartak)
1713 0.61 Fri November 7, 2008
1714 * Moose::Meta::Attribute
1715 - When passing a role to handles, it will be loaded if necessary
1718 * Moose::Meta::Class
1719 - Method objects returned by get_method (and other methods)
1720 Could end up being returned without an associated_metaclass
1721 attribute. Removing get_method_map, which is provided by
1722 Class::MOP::Class, fixed this. The Moose version did nothing
1723 different from its parent except introduce a bug. (Dave Rolsky)
1724 - added tests for this (jdv79)
1727 - Added a $VERSION to all .pm files which didn't have one. Fixes
1728 RT #40049, reported by Adam Kennedy. (Dave Rolsky)
1730 * Moose::Cookbook::Basics::Recipe4
1731 * Moose::Cookbook::Basics::Recipe6
1732 - These files had spaces on the first line of the SYNOPSIS, as
1733 opposed to a totally empty line. According to RT #40432, this
1734 confuses POD parsers. (Dave Rolsky)
1736 0.60 Fri October 24, 2008
1738 - Passing "-traits" when loading Moose caused the Moose.pm
1739 exports to be broken. Reported by t0m. (Dave Rolsky)
1740 - Tests for this bug. (t0m)
1743 - Change resolve_metaclass alias to use the new
1744 load_first_existing_class function. This makes it a lot
1745 simpler, and also around 5 times faster. (t0m)
1746 - Add caching to resolve_metaclass_alias, which gives an order
1747 of magnitude speedup to things which repeatedly call the
1748 Moose::Meta::Attribute->does method, notably MooseX::Storage
1751 * Moose::Util::TypeConstraint
1752 - Put back the changes for parameterized constraints that
1753 shouldn't have been removed in 0.59. We still cannot parse
1754 them, but MooseX modules can create them in some other
1755 way. See the 0.58 changes for more details. (jnapiorkowski)
1756 - Changed the way subtypes are created so that the job is
1757 delegated to a type constraint parent. This clears up some
1758 hardcoded checking and should allow correct subtypes of
1759 Moose::Meta::Type::Constraint. Don't rely on this new API too
1760 much (create_child_type) because it may go away in the
1761 future. (jnapiorkowski)
1763 * Moose::Meta::TypeConstraint::Union
1764 - Type constraint names are sorted as strings, not numbers.
1767 * Moose::Meta::TypeConstraint::Parameterizable
1768 - New parameterize method. This can be used as a factory method
1769 to make a new type constraint with a given parameterized
1770 type. (jnapiorkowski)
1771 - added tests (jnapiorkowski)
1773 0.59 Tue October 14, 2008
1775 - Add abridged documentation for builder/default/initializer/
1776 predicate, and link to more details sections in
1777 Class::MOP::Attribute. (t0m)
1779 * Moose::Util::TypeConstraints
1780 - removed prototypes from all but the &-based stuff (mst)
1782 * Moose::Util::TypeConstraints
1783 - Creating a anonymous subtype with both a constraint and a
1784 message failed with a very unhelpful error, but should just
1785 work. Reported by t0m. (Dave Rolsky)
1788 - Some tests that used Test::Warn if it was available failed
1789 with older versions of Test::Warn. Reported by Fayland. (Dave
1791 - Test firing behavior of triggers in relation to builder/default/
1793 - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
1794 kinds of supported type. (t0m)
1796 * Moose::Meta::Class
1797 - In create(), do not pass "roles" option to the superclass
1798 - added related test that creates an anon metaclass with
1799 a required attribute
1801 * Moose::Meta::TypeConstraint::Class
1802 * Moose::Meta::TypeConstraint::Role
1803 - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
1804 other types (as per change in 0.55_02). (t0m)
1806 * Moose::Meta::TypeConstraint::Registry
1807 - Fix warning when dealing with unknown type names (t0m)
1809 * Moose::Util::TypeConstraints
1810 - Reverted changes from 0.58 related to handle parameterized
1811 types. This caused random failures on BSD and Win32 systems,
1812 apparently related to the regex engine. This means that Moose
1813 can no longer parse structured type constraints like
1814 ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
1815 supported in a slightly different way via MooseX::Types some
1816 time in the future. (Dave Rolsky)
1818 0.58 Sat September 20, 2008
1819 !! This release has an incompatible change regarding !!
1820 !! how roles add methods to a class !!
1822 * Roles and role application
1823 ! Roles now add methods by calling add_method, not
1824 alias_method. They make sure to always provide a method
1825 object, which will be cloned internally. This means that it is
1826 now possible to track the source of a method provided by a
1827 role, and even follow its history through intermediate roles.
1829 This means that methods added by a role now show up when
1830 looking at a class's method list/map. (Dave Rolsky)
1833 - From this release on, we'll try to maintain a list of
1834 conflicting modules, and warn you if you have one
1835 installed. For example, this release conflicts with ...
1836 - MooseX::Singleton <= 0.11
1837 - MooseX::Params::Validate <= 0.05
1840 In general, we try to not break backwards compatibility for
1841 most Moose users, but MooseX modules and other code which
1842 extends Moose's metaclasses is often affected by very small
1843 changes in the Moose internals.
1845 * Moose::Meta::Method::Delegation
1846 * Moose::Meta::Attribute
1847 - Delegation methods now have their own method class. (Dave
1850 * Moose::Meta::TypeConstraint::Parameterizable
1851 - Added a new method 'parameterize' which is basically a factory
1852 for the containing constraint. This makes it easier to create
1853 new types of parameterized constraints. (jnapiorkowski)
1855 * Moose::Meta::TypeConstraint::Union
1856 - Changed the way Union types canonicalize their names to follow
1857 the normalized TC naming rules, which means we strip all
1858 whitespace. (jnapiorkowski)
1860 * Moose::Util::TypeConstraints
1861 - Parameter and Union args are now sorted, this makes Int|Str
1862 the same constraint as Str|Int. (jnapiorkowski)
1863 - Changes to the way Union types are parsed to more correctly
1864 stringify their names. (jnapiorkowski)
1865 - When creating a parameterized type, we now use the new
1866 parameterize method. (jnapiorkowski)
1867 - Incoming type constraint strings are now normalized to remove
1868 all whitespace differences. (jnapiorkowski)
1869 - Changed the way we parse type constraint strings so that we now
1870 match TC[Int,Int,...] and TC[name=>Str] as parameterized type
1871 constraints. This lays the foundation for more flexible type
1872 constraint implementations.
1874 * Tests and docs for all the above. (jnapiorkowski)
1878 - Moose::Exporter will no longer remove a subroutine that the
1879 exporting package re-exports. Moose re-exports the
1880 Carp::confess function, among others. The reasoning is that we
1881 cannot know whether you have also explicitly imported those
1882 functions for your own use, so we err on the safe side and
1883 always keep them. (Dave Rolsky)
1884 - added tests for this (rafl)
1886 * Moose::Meta::Class
1887 - Changes to how we fix metaclass compatibility that are much
1888 too complicated to go into. The summary is that Moose is much
1889 less likely to complain about metaclass incompatibility
1890 now. In particular, if two metaclasses differ because
1891 Moose::Util::MetaRole was used on the two corresponding
1892 classes, then the difference in roles is reconciled for the
1893 subclass's metaclass. (Dave Rolsky)
1894 - Squashed an warning in _process_attribute (thepler)
1897 - throw exceptions (sooner) for invalid attribute names (thepler)
1898 - added tests for this (thepler)
1900 * Moose::Util::MetaRole
1901 - If you explicitly set a constructor or destructor class for a
1902 metaclass object, and then applied roles to the metaclass,
1903 that explicitly set class would be lost and replaced with the
1906 * Moose::Meta::Class
1907 * Moose::Meta::Attribute
1908 * Moose::Meta::Method
1911 * Moose::Error::Default
1912 * Moose::Error::Croak
1913 * Moose::Error::Confess
1914 - All instances of confess() changed to use overridable
1915 C<throw_error> method. This method ultimately calls a class
1916 constructor, and you can change the class being called. In
1917 addition, errors now pass more information than just a string.
1918 The default C<error_class> behaves like C<Carp::confess>, so
1919 the behavior is not visibly different for end users.
1921 0.57 Wed September 3, 2008
1923 - A new bit of doc intended to introduce folks familiar with
1924 "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
1926 * Moose::Unsweetened
1927 - Shows examples of two classes, each done first with and then
1928 without Moose. This makes a nice parallel to
1929 Moose::Intro. (Dave Rolsky)
1931 * Moose::Util::TypeConstraints
1932 - Fixed a bug in find_or_parse_type_constraint so that it
1933 accepts a Moose::Meta::TypeConstraint object as the parent
1934 type, not just a name (jnapiorkowski)
1935 - added tests (jnapiorkowski)
1938 - If Sub::Name was not present, unimporting failed to actually
1939 remove some sugar subs, causing test failures (Dave Rolsky)
1941 0.56 Mon September 1, 2008
1942 For those not following the series of dev releases, there are
1943 several major changes in this release of Moose.
1944 ! Moose::init_meta should now be called as a method. See the
1947 - Major performance improvements by nothingmuch.
1949 - New modules for extension writers, Moose::Exporter and
1950 Moose::Util::MetaRole by Dave Rolsky.
1952 - Lots of doc improvements and additions, especially in the
1955 - Various bug fixes.
1957 * Removed all references to the experimental-but-no-longer-needed
1958 Moose::Meta::Role::Application::ToMetaclassInstance.
1960 * Require Class::MOP 0.65.
1962 0.55_04 Sat August 30, 2008
1963 * Moose::Util::MetaRole
1964 * Moose::Cookbook::Extending::Recipe2
1965 - This simplifies the application of roles to any meta class, as
1966 well as the base object class. Reimplemented metaclass traits
1967 using this module. (Dave Rolsky)
1969 * Moose::Cookbook::Extending::Recipe1
1970 - This a new recipe, an overview of various ways to write Moose
1971 extensions (Dave Rolsky)
1973 * Moose::Cookbook::Extending::Recipe3
1974 * Moose::Cookbook::Extending::Recipe4
1975 - These used to be Extending::Recipe1 and Extending::Recipe2,
1978 0.55_03 Fri August 29, 2008
1979 * No changes from 0.55_02 except increasing the Class::MOP
1980 dependency to 0.64_07.
1982 0.55_02 Fri August 29, 2008
1983 * Makefile.PL and Moose.pm
1984 - explicitly require Perl 5.8.0+ (Dave Rolsky)
1986 * Moose::Util::TypeConstraints
1987 - Fix warnings from find_type_constraint if the type is not
1990 * Moose::Meta::TypeConstraint
1991 - Predicate methods (equals/is_a_type_of/is_subtype_of) now
1992 return false if the type you specify cannot be found in the
1993 type registry, rather than throwing an unhelpful and
1994 coincidental exception. (t0m).
1995 - added docs & test for this (t0m)
1997 * Moose::Meta::TypeConstraint::Registry
1998 - add_type_constraint now throws an exception if a parameter is
2000 - added docs & test for this (t0m)
2002 * Moose::Cookbook::FAQ
2003 - Added a faq entry on the difference between "role" and "trait"
2007 - Fixed a bug that caused role composition to not see a required
2008 method when that method was provided by another role being
2009 composed at the same time. (Dave Rolsky)
2010 - test and bug finding (tokuhirom)
2012 0.55_01 Wed August 20, 2008
2014 !! Calling Moose::init_meta as a function is now !!
2015 !! deprecated. Please see the Moose.pm docs for details. !!
2017 * Moose::Meta::Method::Constructor
2018 - Fix inlined constructor so that values produced by default
2019 or builder methods are coerced as required. (t0m)
2020 - added test for this (t0m)
2022 * Moose::Meta::Attribute
2023 - A lazy attribute with a default or builder did not attempt to
2024 coerce the default value. The immutable code _did_
2026 - added test for this (t0m)
2029 - This is a new helper module for writing "Moose-alike"
2030 modules. This should make the lives of MooseX module authors
2031 much easier. (Dave Rolsky)
2034 * Moose::Cookbook::Meta::Recipe5
2035 - Implemented metaclass traits (and wrote a recipe for it):
2037 use Moose -traits => 'Foo'
2039 This should make writing small Moose extensions a little
2040 easier (Dave Rolsky)
2042 * Moose::Cookbook::Basics::Recipe1
2043 - Removed any examples of direct hashref access, and applied an
2044 editorial axe to reduce verbosity. (Dave Rolsky)
2046 * Moose::Cookbook::Basics::Recipe1
2047 - Also applied an editorial axe here. (Dave Rolsky)
2050 * Moose::Cookbook::Extending::Recipe1
2051 * Moose::Cookbook::Extending::Recipe2
2052 - Rewrote extending and embedding moose documentation and
2053 recipes to use Moose::Exporter (Dave Rolsky)
2057 - These two modules now warn when you load them from the main
2058 package "main" package, because we will not export sugar to
2059 main. Previously it just did nothing. (Dave Rolsky)
2062 - Now provide an init_meta method just like Moose.pm, and you
2063 can call this to provide an alternate role metaclass. (Dave
2064 Rolsky and nothingmuch)
2065 - get_method_map now respects the package cache flag (nothingmuch)
2068 - Two new methods - add_method and wrap_method_body
2072 - Optimizations including allowing constructors to accept hash
2073 refs, making many more classes immutable, and making
2074 constructors immutable. (nothingmuch)
2076 0.55 Sun August 3, 2008
2077 * Moose::Meta::Attribute
2078 - breaking down the way 'handles' methods are
2079 created so that the process can be more easily
2080 overridden by subclasses (stevan)
2082 * Moose::Meta::TypeConstraint
2083 - fixing what is passed into a ->message with
2084 the type constraints (RT #37569)
2085 - added tests for this (Charles Alderman)
2087 * Moose::Util::TypeConstraints
2088 - fix coerce to accept anon types like subtype can (mst)
2091 - reorganized the recipes into sections - Basics, Roles, Meta,
2092 Extending - and wrote abstracts for each section (Dave Rolsky)
2094 * Moose::Cookbook::Basics::Recipe10
2095 - A new recipe that demonstrates operator overloading
2096 in combination with Moose. (bluefeet)
2098 * Moose::Cookbook::Meta::Recipe1
2099 - an introduction to what meta is and why you'd want to make
2100 your own metaclass extensions (Dave Rolsky)
2102 * Moose::Cookbook::Meta::Recipe4
2103 - a very simple metaclass example (Dave Rolsky)
2105 * Moose::Cookbook::Extending::Recipe1
2106 - how to write a Moose-alike module to use your own object base
2109 * Moose::Cookbook::Extending::Recipe2
2110 - how to write modules with an API just like C<Moose.pm> (Dave
2114 - Tons of fixes, both syntactical and grammatical (Dave
2115 Rolsky, Paul Fenwick)
2117 0.54 Thurs. July 3, 2008
2118 ... this is not my day today ...
2120 * Moose::Meta::Attribute
2121 - fixed legal_options_for_inheritance such that
2122 clone_and_inherit options still works for
2123 Class::MOP::Attribute objects and therefore
2124 does not break MooseX::AttributeHelpers
2127 0.53 Thurs. July 3, 2008
2128 * Whoops, I guess I should run 'make manifest' before
2129 actually releasing the module. No actual changes
2130 in this release, except the fact that it includes
2131 the changes that I didn't include in the last
2134 0.52 Thurs. July 3, 2008
2136 - added "FEATURE REQUESTS" section to the Moose docs
2137 to properly direct people (stevan) (RT #34333)
2138 - making 'extends' croak if it is passed a Role since
2139 this is not ever something you want to do
2140 (fixed by stevan, found by obra)
2141 - added tests for this (stevan)
2144 - adding support for DOES (as in UNIVERSAL::DOES)
2146 - added test for this
2148 * Moose::Meta::Attribute
2149 - added legal_options_for_inheritance (wreis)
2150 - added tests for this (wreis)
2152 * Moose::Cookbook::Snacks::*
2153 - removed some of the unfinished snacks that should
2154 not have been released yet. Added some more examples
2155 to the 'Keywords' snack. (stevan)
2157 * Moose::Cookbook::Style
2158 - added general Moose "style guide" of sorts to the
2159 cookbook (nothingmuch) (RT #34335)
2162 - added more BUILDARGS tests (stevan)
2164 0.51 Thurs. Jun 26, 2008
2166 - add unimport so "no Moose::Role" actually does
2169 * Moose::Meta::Role::Application::ToRole
2170 - when RoleA did RoleB, and RoleA aliased a method from RoleB in
2171 order to provide its own implementation, that method still got
2172 added to the list of required methods for consumers of
2173 RoleB. Now an aliased method is only added to the list of
2174 required methods if the role doing the aliasing does not
2175 provide its own implementation. See Recipe 11 for an example
2176 of all this. (Dave Rolsky)
2177 - added tests for this
2179 * Moose::Meta::Method::Constructor
2180 - when a single argument that wasn't a hashref was provided to
2181 an immutabilized constructor, the error message was very
2182 unhelpful, as opposed to the non-immutable error. Reported by
2184 - added test for this (Dave Rolsky)
2186 * Moose::Meta::Attribute
2187 - added support for meta_attr->does("ShortAlias") (sartak)
2188 - added tests for this (sartak)
2189 - moved the bulk of the `handles` handling to the new
2190 install_delegation method (Stevan)
2193 - Added BUILDARGS, a new step in new()
2195 * Moose::Meta::Role::Application::RoleSummation
2196 - fix typos no one ever sees (sartak)
2198 * Moose::Util::TypeConstraints
2199 * Moose::Meta::TypeConstraint
2200 * Moose::Meta::TypeCoercion
2201 - Attempt to work around the ??{ } vs. threads issue
2203 - Some null_constraint optimizations
2205 0.50 Thurs. Jun 11, 2008
2206 - Fixed a version number issue by bumping all modules
2209 0.49 Thurs. Jun 11, 2008
2210 !! This version now approx. 20-25% !!
2211 !! faster with new Class::MOP 0.59 !!
2213 * Moose::Meta::Attribute
2214 - fixed how the is => (ro|rw) works with
2215 custom defined reader, writer and accessor
2217 - added docs for this (TODO).
2218 - added tests for this (Thanks to Penfold)
2219 - added the custom attribute alias for regular
2220 Moose attributes which is "Moose"
2221 - fix builder and default both being used
2226 Moose::Meta::Attribute
2228 Moose::Meta::Role::Composite
2229 Moose::Util::TypeConstraints
2230 - switched usage of reftype to ref because
2234 - changing add_package_symbol to use the new
2238 - fixed how DEMOLISHALL is called so that it
2239 can be overrided in subclasses (thanks to Sartak)
2240 - added test for this (thanks to Sartak)
2242 * Moose::Util::TypeConstraints
2243 - move the ClassName type check code to
2244 Class::MOP::is_class_loaded (thanks to Sartak)
2246 * Moose::Cookbook::Recipe11
2247 - add tests for this (thanks to tokuhirom)
2249 0.48 Thurs. May 29, 2008
2250 (early morning release engineering)--
2252 - fixing the version in Moose::Meta::Method::Destructor
2253 which was causing the indexer to choke
2255 0.47 Thurs. May 29, 2008
2256 (late night release engineering)--
2258 - fixing the version is META.yml, no functional
2259 changes in this release
2261 0.46 Wed. May 28, 2008
2262 !! This version now approx. 20-25% !!
2263 !! faster with new Class::MOP 0.57 !!
2265 * Moose::Meta::Class
2266 - some optimizations of the &initialize method
2267 since it is called so often by &meta
2269 * Moose::Meta::Class
2271 - now use the get_all_package_symbols from the
2272 updated Class::MOP, test suite is now 10 seconds
2275 * Moose::Meta::Method::Destructor
2276 - is_needed can now also be called as a class
2277 method for immutablization to check if the
2278 destructor object even needs to be created
2281 * Moose::Meta::Method::Destructor
2282 Moose::Meta::Method::Constructor
2283 - added more descriptive error message to help
2284 keep people from wasting time tracking an error
2285 that is easily fixed by upgrading.
2287 0.45 Saturday, May 24, 2008
2289 - Because of work in Class::MOP 0.57, all
2290 XS based functionality is now optional
2291 and a Pure Perl version is supplied
2292 - the CLASS_MOP_NO_XS environment variable
2293 can now be used to force non-XS versions
2295 - several of the packages have been tweaked
2296 to take care of this, mostly we added
2297 support for the package_name and name
2298 variables in all the Method metaclasses
2299 - before/around/after method modifiers now
2300 support regexp matching of names
2301 (thanks to Takatoshi Kitano)
2302 - tests added for this
2303 - NOTE: this only works for classes, it
2304 is currently not supported in roles,
2305 but, ... patches welcome
2306 - All usage of Carp::confess have been replaced
2307 by Carp::croak in the "keyword" functions since
2308 the stack trace is usually not helpful
2311 - All usage of Carp::confess have been replaced
2312 by Carp::croak in the "keyword" functions since
2313 the stack trace is usually not helpful
2314 - The 'has' keyword for roles now accepts the
2315 same array ref form that Moose.pm does
2316 (has [qw/foo bar/] => (is => 'rw', ...))
2317 - added test for this
2319 * Moose::Meta::Attribute
2320 - trigger on a ro-attribute is no longer an
2321 error, as it's useful to trigger off of the
2324 * Moose::Meta::Class
2325 - added same 'add_package_symbol' fix as in
2329 - does_role now handles non-Moose classes
2331 - added tests for this
2332 - added the 'add_method_modifier' function
2333 (thanks to Takatoshi Kitano)
2335 * Moose::Util::TypeConstraints
2336 - subtypes of parameterizable types now are
2337 themselves parameterizable types
2339 * Moose::Meta::Method::Constructor
2340 - fixed bug where trigger was not being
2341 called by the inlined immutable
2343 - added test for this (thanks to Caelum)
2345 * Moose::Meta::Role::Application::ToInstance
2346 - now uses the metaclass of the instance
2347 (if possible) to create the anon-class
2348 (thanks Jonathan Rockway)
2350 * Moose::Cookbook::Recipe22
2351 - added the meta-attribute trait recipe
2355 - fixed hash-ordering test bug that was
2356 causing occasional cpantester failures
2357 - renamed the t/000_recipe/*.t tests to be
2358 more descriptive (thanks to Sartak)
2360 0.44 Sat. May 10, 2008
2362 - made make_immutable warning cluck to
2363 show where the error is (thanks mst)
2366 - BUILDALL and DEMOLISHALL now call
2367 ->body when looping through the
2368 methods, to avoid the overloaded
2370 - fixed issue where DEMOLISHALL was
2371 eating the $@ values, and so not
2372 working correctly, it still kind of
2373 eats them, but so does vanilla perl
2374 - added tests for this
2376 * Moose::Cookbook::Recipe7
2377 - added new recipe for immutable
2378 functionality (thanks Dave Rolsky)
2380 * Moose::Cookbook::Recipe9
2381 - added new recipe for builder and
2382 lazy_build (thanks Dave Rolsky)
2384 * Moose::Cookbook::Recipe11
2385 - added new recipe for method aliasing
2386 and exclusion with Roles (thanks Dave Rolsky)
2389 - fixed Win32 test failure (thanks spicyjack)
2391 ~ removed Build.PL and Module::Build compat
2392 since Module::Install has done that.
2394 0.43 Wed. April, 30, 2008
2396 drink more coffee before
2397 doing release engineering
2399 - whoops, forgot to do the smolder tests,
2400 and we broke some of the custom meta-attr
2401 modules. This fixes that.
2403 0.42 Mon. April 28, 2008
2404 - some bad tests slipped by, nothing else
2405 changed in this release (cpantesters++)
2407 - upped the Class::MOP dependency to 0.55
2408 since we have tests which need the C3
2411 0.41 Mon. April 28, 2008
2412 ~~ numerous documentation updates ~~
2414 - Changed all usage of die to Carp::croak for better
2415 error reporting (initial patch by Tod Hagan)
2417 ** IMPORTANT NOTE **
2418 - the make_immutable keyword is now deprecated, don't
2419 use it in any new code and please fix your old code
2420 as well. There will be 2 releases, and then it will
2426 - refactored the way inner and super work to avoid
2427 any method/@ISA cache penalty (nothingmuch)
2429 * Moose::Meta::Class
2430 - fixing &new_object to make sure trigger gets the
2431 coerced value (spotted by Charles Alderman on the
2433 - added test for this
2435 * Moose::Meta::Method::Constructor
2436 - immutable classes which had non-lazy attributes were calling
2437 the default generating sub twice in the constructor. (bug
2438 found by Jesse Luehrs, fixed by Dave Rolsky)
2439 - added tests for this (Dave Rolsky)
2440 - fix typo in initialize_body method (nothingmuch)
2442 * Moose::Meta::Method::Destructor
2443 - fix typo in initialize_body method (nothingmuch)
2445 * Moose::Meta::Method::Overriden
2446 Moose::Meta::Method::Augmented
2447 - moved the logic for these into their own
2448 classes (nothingmuch)
2450 * Moose::Meta::Attribute
2451 - inherited attributes may now be extended without
2452 restriction on the type ('isa', 'does') (Sartak)
2453 - added tests for this (Sartak)
2454 - when an attribute property is malformed (such as lazy without
2455 a default), give the name of the attribute in the error
2457 - added the &applied_traits and &has_applied_traits methods
2458 to allow introspection of traits
2459 - added tests for this
2460 - moved 'trait' and 'metaclass' argument handling to here from
2462 - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
2463 '+foo' syntax) (nothingmuch)
2464 - added tests for this (t0m)
2467 - localize $@ inside DEMOLISHALL to avoid it
2468 eating $@ (found by Ernesto)
2469 - added test for this (thanks to Ernesto)
2471 * Moose::Util::TypeConstraints
2472 - &find_type_constraint now DWIMs when given an
2473 type constraint object or name (nothingmuch)
2474 - &find_or_create_type_constraint superseded with a number of more
2476 - find_or_create_{isa,does}_type_constraint
2477 - find_or_parse_type_constraint
2479 * Moose::Meta::TypeConstraint
2480 Moose::Meta::TypeConstraint::Class
2481 Moose::Meta::TypeConstraint::Role
2482 Moose::Meta::TypeConstraint::Enum
2483 Moose::Meta::TypeConstraint::Union
2484 Moose::Meta::TypeConstraint::Parameterized
2485 - added the &equals method for comparing two type
2486 constraints (nothingmuch)
2487 - added tests for this (nothingmuch)
2489 * Moose::Meta::TypeConstraint
2490 - add the &parents method, which is just an alias to &parent.
2491 Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
2493 * Moose::Meta::TypeConstraint::Class
2494 - added the class attribute for introspection purposes
2496 - added tests for this
2498 * Moose::Meta::TypeConstraint::Enum
2499 Moose::Meta::TypeConstraint::Role
2500 - broke these out into their own classes (nothingmuch)
2502 * Moose::Cookbook::Recipe*
2503 - fixed references to test file locations in the POD
2504 and updated up some text for new Moose features
2508 - Added &resolve_metaclass_alias, a helper function for finding an actual
2509 class for a short name (e.g. in the traits list)
2511 0.40 Fri. March 14, 2008
2512 - I hate Pod::Coverage
2514 0.39 Fri. March 14, 2008
2516 - documenting the use of '+name' with attributes
2517 that come from recently composed roles. It makes
2518 sense, people are using it, and so why not just
2519 officially support it.
2520 - fixing the 'extends' keyword so that it will not
2521 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
2524 - added the perl -Moose=+Class::Name feature to allow
2525 monkeypatching of classes in one liners
2528 - fixing the 'apply_all_roles' keyword so that it will not
2529 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
2531 * Moose::Meta::Class
2532 - added ->create method which now supports roles (thanks to jrockway)
2533 - added tests for this
2534 - added ->create_anon_class which now supports roles and caching of
2535 the results (thanks to jrockway)
2536 - added tests for this
2537 - made ->does_role a little more forgiving when it is
2538 checking a Class::MOP era metaclasses.
2540 * Moose::Meta::Role::Application::ToInstance
2541 - it is now possible to pass extra params to be used when
2542 a role is applied to an the instance (rebless_params)
2543 - added tests for this
2545 * Moose::Util::TypeConstraints
2546 - class_type now accepts an optional second argument for a
2547 custom message. POD anotated accordingly (groditi)
2548 - added tests for this
2549 - it is now possible to make anon-enums by passing 'enum' an
2550 ARRAY ref instead of the $name => @values. Everything else
2552 - added tests for this
2555 - making test for using '+name' on attributes consumed
2556 from a role, it works and makes sense too.
2558 * Moose::Meta::Attribute
2559 - fix handles so that it doesn't return nothing
2560 when the method cannot be found, not sure why
2561 it ever did this originally, this means we now
2562 have slightly better support for AUTOLOADed
2564 - added more delegation tests
2565 - adding ->does method to this so as to better
2566 support traits and their introspection.
2567 - added tests for this
2570 - localizing the Data::Dumper configurations so
2571 that it does not pollute others (RT #33509)
2572 - made ->does a little more forgiving when it is
2573 passed Class::MOP era metaclasses.
2575 0.38 Fri. Feb. 15, 2008
2576 * Moose::Meta::Attribute
2577 - fixed initializer to correctly do
2578 type checking and coercion in the
2580 - added tests for this
2583 - fixed some finicky tests (thanks to konobi)
2585 0.37 Thurs. Feb. 14, 2008
2587 - fixed some details in Moose::init_meta
2588 and its superclass handling (thanks thepler)
2589 - added tests for this (thanks thepler)
2590 - 'has' now dies if you don't pass in name
2592 - added the 'make_immutable' keyword as a shortcut
2595 * Moose::Meta::Class
2596 Moose::Meta::Method::Constructor
2597 Moose::Meta::Attribute
2598 - making (init_arg => undef) work here too
2599 (thanks to nothingmuch)
2601 * Moose::Meta::Attribute
2602 Moose::Meta::Method::Constructor
2603 Moose::Meta::Method::Accessor
2604 - make lazy attributes respect attr initializers (rjbs)
2605 - added tests for this
2607 * Moose::Util::TypeConstraints
2608 Moose::Util::TypeConstraints::OptimizedConstraints
2609 Moose::Meta::TypeConstraints
2610 Moose::Meta::Attribute
2611 Moose::Meta::Method::Constructor
2612 Moose::Meta::Method::Accessor
2613 - making type errors use the
2614 assigned message (thanks to Sartak)
2615 - added tests for this
2617 * Moose::Meta::Method::Destructor
2618 - making sure DESTROY gets inlined properly
2619 with successive DEMOLISH calls (thanks to manito)
2621 * Moose::Meta::Attribute
2622 Moose::Meta::Method::Accessor
2623 - fixed handling of undef with type constraints
2625 - added tests for this
2628 - added &get_all_init_args and &get_all_attribute_values
2629 (thanks to Sartak and nothingmuch)
2631 0.36 Sat. Jan. 26, 2008
2633 Moose::Meta::Attribute
2634 - role type tests now support when roles are
2635 applied to non-Moose classes (found by ash)
2636 - added tests for this (thanks to ash)
2637 - couple extra tests to boost code coverage
2639 * Moose::Meta::Method::Constructor
2640 - improved fix for handling Class::MOP attributes
2641 - added test for this
2643 * Moose::Meta::Class
2644 - handled the add_attribute($attribute_meta_object)
2646 - added test for this
2648 0.35 Tues. Jan. 22, 2008
2649 * Moose::Meta::Method::Constructor
2650 - fix to make sure even Class::MOP attributes
2651 are handled correctly (Thanks to Dave Rolsky)
2652 - added test for this (also Dave Rolsky)
2654 * Moose::Meta::Class
2655 - improved error message on _apply_all_roles,
2656 you should now use Moose::Util::apply_all_roles
2657 and you shouldnt have been using a _ prefixed
2658 method in the first place ;)
2660 0.34 Mon. Jan. 21, 2008
2661 ~~~ more misc. doc. fixes ~~~
2662 ~~ updated copyright dates ~~
2664 Moose is now a postmodern object system :)
2665 - (see the POD for details)
2667 * <<Role System Refactoring>>
2668 - this release contains a major reworking and
2669 cleanup of the role system
2670 - 100% backwards compat.
2671 - Role application now restructured into seperate
2672 classes based on type of applicants
2673 - Role summation (combining of more than one role)
2674 is much cleaner and anon-classes are no longer
2675 used in this process
2676 - new Composite role metaclass
2677 - runtime application of roles to instances
2678 is now more efficient and re-uses generated
2679 classes when applicable
2681 * <<New Role composition features>>
2682 - methods can now be excluded from a given role
2684 - methods can now be aliased to another name (and
2685 still retain the original as well)
2687 * Moose::Util::TypeConstraints::OptimizedConstraints
2688 - added this module (see above)
2690 * Moose::Meta::Class
2691 - fixed the &_process_attribute method to be called
2692 by &add_attribute, so that the API is now correct
2694 * Moose::Meta::Method::Accessor
2695 - fixed bug when passing a list of values to
2696 an accessor would get (incorrectly) ignored.
2697 Thanks to Sartak for finding this ;)
2698 - added tests for this (Sartak again)
2700 * Moose::Meta::Method::Accessor
2701 Moose::Meta::Method::Constructor
2702 Moose::Meta::Attribute
2703 Moose::Meta::TypeConstraint
2704 Moose::Meta::TypeCoercion
2705 - lots of cleanup of such things as:
2707 - type constraint handling
2708 - error handling/messages
2709 (thanks to nothingmuch)
2711 * Moose::Meta::TypeConstraint::Parameterizable
2712 - added this module to support the refactor
2713 in Moose::Meta::TypeConstraint::Parameterized
2715 * Moose::Meta::TypeConstraint::Parameterized
2716 - refactored how these types are handled so they
2717 are more generic and not confined to ArrayRef
2721 - shortened some file names for better VMS support (RT #32381)
2723 0.33 Fri. Dec. 14, 2007
2724 !! Moose now loads 2 x faster !!
2725 !! with new Class::MOP 0.49 !!
2727 ++ new oose.pm module to make command line
2728 Moose-ness easier (see POD docs for more)
2730 * Moose::Meta::Class
2732 - several tweaks to take advantage of the
2733 new method map caching in Class::MOP
2735 * Moose::Meta::TypeConstraint::Parameterized
2736 - allow subtypes of ArrayRef and HashRef to
2737 be used as a container (sartak)
2738 - added tests for this
2739 - basic support for coercion to ArrayRef and
2740 HashRef for containers (sartak)
2741 - added tests for this
2743 * Moose::Meta::TypeCoercion
2744 - coercions will now create subtypes as needed
2745 so you can now add coercions to parameterized
2746 types without having to explictly define them
2747 - added tests for this
2749 * Moose::Meta::Method::Accessor
2750 - allow subclasses to decide whether we need
2751 to copy the value into a new variable (sartak)
2753 0.32 Tues. Dec. 4, 2007
2754 * Moose::Util::TypeConstraints
2755 - fixing how subtype aliases of unions work
2756 they should inherit the parent's coercion
2757 - added tests for this
2758 - you can now define multiple coercions on
2759 a single type at different times instead of
2760 having to do it all in one place
2761 - added tests for this
2763 * Moose::Meta::TypeConstraint
2764 - there is now a default constraint of sub { 1 }
2765 instead of Moose::Util::TypeConstraints setting
2768 * Moose::Meta::TypeCoercion
2769 * Moose::Meta::TypeCoercion::Union
2770 - added the &has_coercion_for_type and
2771 &add_type_coercions methods to support the
2772 new features above (although you cannot add
2773 more type coercions for Union types)
2775 0.31 Mon. Nov. 26, 2007
2776 * Moose::Meta::Attribute
2777 - made the +attr syntax handle extending types with
2778 parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
2779 now works if the original foo is an ArrayRef.
2780 - added tests for this.
2781 - delegation now works even if the attribute does not
2782 have a reader method using the get_read_method_ref
2783 method from Class::MOP::Attribute.
2784 - added tests for this
2785 - added docs for this
2787 * Moose::Util::TypeConstraints
2788 - passing no "additional attribute info" to
2789 &find_or_create_type_constraint will no longer
2790 attempt to create an __ANON__ type for you,
2791 instead it will just return undef.
2792 - added docs for this
2794 0.30 Fri. Nov. 23, 2007
2795 * Moose::Meta::Method::Constructor
2796 -builder related bug in inlined constructor. (groditi)
2798 * Moose::Meta::Method::Accessor
2799 - genereate unnecessary calls to predicates and refactor
2800 code generation for runtime speed (groditi)
2802 * Moose::Util::TypeConstraints
2803 - fix ClassName constraint to introspect symbol table (mst)
2804 - added more tests for this (mst)
2805 - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
2806 with work correctly.
2807 - added tests for this
2810 - adding the link to Recipie 11 (written by Sartak)
2811 - adding test for SYNOPSIS code
2814 - New tests for builder bug. Upon instantiation, if an
2815 attribute had a builder, no value and was not lazy the
2816 builder default was not getting run, oops. (groditi)
2818 0.29 Tues. Nov. 13, 2007
2819 * Moose::Meta::Attribute
2820 - Fix error message on missing builder method (groditi)
2822 * Moose::Meta::Method::Accessor
2823 - Fix error message on missing builder method (groditi)
2826 - Add test to check for the correct error message when
2827 builder method is missing (groditi)
2829 0.28 Tues. Nov. 13, 2007
2830 - 0.27 packaged incorrectly (groditi)
2832 0.27 Tues. Nov. 13, 2007
2833 * Moose::Meta::Attribute
2834 - Added support for the new builder option (groditi)
2835 - Added support for lazy_build option (groditi)
2836 - Changed slot initialization for predicate changes (groditi)
2838 * Moose::Meta::Method::Accessor
2839 - Added support for lazy_build option (groditi)
2840 - Fix inline methods to work with corrected predicate
2843 * Moose::Meta::Method::Constructor
2844 - Added support for lazy_build option (groditi)
2847 - tests for builder and lazy_build (groditi)
2849 * fixing some misc. bits in the docs that
2850 got mentioned on CPAN Forum & perlmonks
2853 - fixed how required methods are handled
2854 when they encounter overriden or modified
2855 methods from a class (thanks to confound).
2856 - added tests for this
2858 * Moose::Util::TypeConstraint
2859 - fixed the type notation parser so that
2860 the | always creates a union and so is
2861 no longer a valid type char (thanks to
2862 konobi, mugwump and #moose for working
2864 - added more tests for this
2866 0.26 Thurs. Sept. 27, 2007
2869 * Parameterized Types
2870 We now support parameterized collection types, such as:
2871 ArrayRef[Int] # array or integers
2872 HashRef[Object] # a hash with object values
2873 They can also be nested:
2874 ArrayRef[HashRef[RegexpRef]] # an array of hashes with regex values
2875 And work with the type unions as well:
2876 ArrayRef[Int | Str] # array of integers of strings
2878 * Better Framework Extendability
2879 Moose.pm is now "extendable" such that it is now much
2880 easier to extend the framework and add your own keywords
2881 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
2882 section of the Moose.pm docs.
2885 In an effort to begin documenting some of the various
2886 details of Moose as well as some common idioms, we have
2887 created Moose::Cookbook::Snacks as a place to find
2888 small (easily digestable) nuggets of Moose code.
2891 ~ Several doc updates/cleanup thanks to castaway ~
2893 - converted build system to use Module::Install instead of
2894 Module::Build (thanks to jrockway)
2897 - added all the meta classes to the immutable list and
2898 set it to inline the accessors
2899 - fix import to allow Sub::Exporter like { into => }
2900 and { into_level => } (perigrin)
2901 - exposed and documented init_meta() to allow better
2902 embedding and extending of Moose (perigrin)
2905 - complete re-organization of the test suite
2906 - added some new tests as well
2907 - finally re-enabled the Moose::POOP test since
2908 the new version of DBM::Deep now works again
2911 * Moose::Meta::Class
2912 - fixed very odd and very nasty recursion bug with
2914 - added tests for this (eilara)
2916 * Moose::Meta::Attribute
2917 Moose::Meta::Method::Constructor
2918 Moose::Meta::Method::Accessor
2919 - fixed issue with overload::Overloaded getting called
2920 on non-blessed items. (RT #29269)
2921 - added tests for this
2923 * Moose::Meta::Method::Accessor
2924 - fixed issue with generated accessor code making
2925 assumptions about hash based classes (thanks to dexter)
2927 * Moose::Coookbook::Snacks
2928 - these are bits of documentation, not quite as big as
2929 Recipes but which have no clear place in the module docs.
2930 So they are Snacks! (horray for castaway++)
2932 * Moose::Cookbook::Recipe4
2933 - updated it to use the new ArrayRef[MyType] construct
2934 - updated the accompanying test as well
2936 +++ Major Refactor of the Type Constraint system +++
2937 +++ with new features added as well +++
2939 * Moose::Util::TypeConstraint
2940 - no longer uses package variable to keep track of
2941 the type constraints, now uses the an instance of
2942 Moose::Meta::TypeConstraint::Registry to do it
2943 - added more sophisticated type notation parsing
2945 - added tests for this
2947 * Moose::Meta::TypeConstraint
2948 - some minor adjustments to make subclassing easier
2949 - added the package_defined_in attribute so that we
2950 can track where the type constraints are created
2952 * Moose::Meta::TypeConstraint::Union
2953 - this is now been refactored to be a subclass of
2954 Moose::Meta::TypeConstraint
2956 * Moose::Meta::TypeCoercion::Union
2957 - this has been added to service the newly refactored
2958 Moose::Meta::TypeConstraint::Union and is itself
2959 a subclass of Moose::Meta::TypeCoercion
2961 * Moose::Meta::TypeConstraint::Parameterized
2962 - added this module (taken from MooseX::AttributeHelpers)
2963 to help construct nested collection types
2964 - added tests for this
2966 * Moose::Meta::TypeConstraint::Registry
2967 - added this class to keep track of type constraints
2969 0.25 Mon. Aug. 13, 2007
2971 - Documentation update to reference Moose::Util::TypeConstraints
2972 under 'isa' in 'has' for how to define a new type
2973 (thanks to shlomif).
2975 * Moose::Meta::Attribute
2976 - required attributes now will no longer accept undef
2977 from the constructor, even if there is a default and lazy
2978 - added tests for this
2979 - default subroutines must return a value which passes the
2981 - added tests for this
2983 * Moose::Meta::Attribute
2984 * Moose::Meta::Method::Constructor
2985 * Moose::Meta::Method::Accessor
2986 - type-constraint tests now handle overloaded objects correctly
2987 in the error message
2988 - added tests for this (thanks to EvanCarroll)
2990 * Moose::Meta::TypeConstraint::Union
2991 - added (has_)hand_optimized_constraint to this class so that
2992 it behaves as the regular Moose::Meta::TypeConstraint does.
2995 - large refactoring of this code
2996 - added several more tests
2997 - tests for subtle conflict resolition issues
2998 added, but not currently running
3001 * Moose::Cookbook::Recipe7
3002 - added new recipe for augment/inner functionality
3004 - added test for this
3007 - a formal definition of roles (still in progress)
3010 - utilities for easier working with Moose classes
3011 - added tests for these
3014 - This contains Moose specific test functions
3015 - added tests for these
3017 0.24 Tues. July 3, 2007
3018 ~ Some doc updates/cleanup ~
3020 * Moose::Meta::Attribute
3021 - added support for roles to be given as parameters
3022 to the 'handles' option.
3023 - added tests and docs for this
3024 - the has '+foo' attribute form now accepts changes to
3025 the lazy option, and the addition of a handles option
3026 (but not changing the handles option)
3027 - added tests and docs for this
3030 - required methods are now fetched using find_method_by_name
3031 so that required methods can come from superclasses
3032 - adjusted tests for this
3034 0.23 Mon. June 18, 2007
3035 * Moose::Meta::Method::Constructor
3036 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
3037 * Moose::Meta::Class
3038 - Modify make_immutable to work with the new Class::MOP immutable
3039 mechanism + POD + very basic test (groditi)
3040 * Moose::Meta::Attribute
3041 - Fix handles to use goto() so that caller() comes out properly on
3042 the other side (perigrin)
3044 0.22 Thurs. May 31, 2007
3045 * Moose::Util::TypeConstraints
3046 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
3047 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
3048 prototypes for functions
3049 - added the ClassName type constraint, this checks for strings
3050 which will respond true to ->isa(UNIVERSAL).
3051 - added tests and docs for this
3052 - subtyping just in name now works correctly by making the
3053 default for where be { 1 }
3054 - added test for this
3056 * Moose::Meta::Method::Accessor
3057 - coerce and lazy now work together correctly, thanks to
3058 merlyn for finding this bug
3059 - tests added for this
3060 - fix reader presedence bug in Moose::Meta::Attribute + tests
3063 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
3064 a HASH-ref and missed. This produces better error messages then
3065 having it die cause undef is not a HASH.
3066 - added tests for this
3068 0.21 Thursday, May 2nd, 2007
3070 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
3071 - modified unimport to remove super and inner along with the rest
3072 - altered unimport tests to handle this
3075 - altered super export to populate SUPER_SLOT
3077 * Moose::Meta::Class
3078 - altered augment and override modifier application to use *_SLOT
3079 - modified tests for these to unimport one test class each to test
3082 - fixed issue where custom attribute metaclasses
3083 where not handled correctly in roles
3084 - added tests for this
3086 * Moose::Meta::Class
3087 - fixed issue where extending metaclasses with
3088 roles would blow up. Thanks to Aankhen`` for
3089 finding this insidious error, and it's solution.
3091 ~~ lots of spelling and grammer fixes in the docs,
3092 many many thanks to rlb3 and Aankhen for these :)
3094 0.20 Friday, April 6th, 2007
3095 >> I messed up the SKIP logic in one test
3096 so this release is just to fix that.
3099 - 'has' now also accepts an ARRAY ref
3100 to create multiple attrs (see docs)
3101 (thanks to konobi for this)
3102 - added tests and docs
3104 0.19 Thurs. April 5th, 2007
3105 ~~ More documentation updates ~~
3107 * Moose::Util::TypeConstraints
3108 - 'type' now supports messages as well
3109 thanks to phaylon for finding this
3110 - added tests for this
3111 - added &list_all_type_constraints and
3112 &list_all_builtin_type_constraints
3113 functions to facilitate introspection.
3115 * Moose::Meta::Attribute
3116 - fixed regexp 'handles' declarations
3117 to build the list of delegated methods
3118 correctly (and not override important
3119 things like &new) thanks to ashleyb
3121 - added tests and docs for this
3122 - added the 'documentation' attributes
3123 so that you can actually document your
3124 attributes and inspect them through the
3126 - added tests and docs for this
3128 * Moose::Meta::Class
3129 - when loading custom attribute metaclasses
3130 it will first look in for the class in the
3131 Moose::Meta::Attribute::Custom::$name, and
3132 then default to just loading $name.
3133 - added tests and docs for this
3135 * Moose::Meta::TypeConstraint
3136 - type constraints now stringify to their names.
3137 - added test for this
3140 - added tests to assure we work with Module::Refresh
3141 - added stricter test skip logic in the Moose POOP
3142 test, ask Rob Kinyon why.
3143 - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
3145 0.18 Sat. March 10, 2007
3146 ~~ Many, many documentation updates ~~
3149 - We now use Class::MOP::load_class to
3151 - added tests to show types and subtypes
3152 working with Declare::Constraints::Simple
3153 and Test::Deep as constraint engines.
3156 !! You must have Class::MOP 0.37_001 !!
3157 !! for this developer release to work !!
3159 This release was primarily adding the immutable
3160 feature to Moose. An immutable class is one which
3161 you promise not to alter. When you set the class
3162 as immutable it will perform various bits of
3163 memoization and inline certain part of the code
3164 (constructors, destructors and accessors). This
3165 minimizes (and in some cases totally eliminates)
3166 one of Moose's biggest performance hits. This
3167 feature is not on by default, and is 100% optional.
3168 It has several configurable bits as well, so you
3169 can pick and choose to your specific needs.
3171 The changes involved in this were fairly wide and
3172 highly specific, but 100% backwards compatible, so
3173 I am not going to enumerate them here. If you are
3174 truely interested in what was changed, please do
3177 0.17 Tues. Nov. 14, 2006
3178 * Moose::Meta::Method::Accessor
3179 - bugfix for read-only accessors which
3180 are have a type constraint and lazy.
3181 Thanks to chansen for finding it.
3183 0.16 Tues. Nov. 14, 2006
3185 There are some speed improvements in this release,
3186 but they are only the begining, so stay tuned.
3189 - BUILDALL and DEMOLISHALL no longer get
3190 called unless they actually need to be.
3191 This gave us a signifigant speed boost
3192 for the cases when there is no BUILD or
3193 DEMOLISH method present.
3195 * Moose::Util::TypeConstraints
3196 * Moose::Meta::TypeConstraint
3197 - added an 'optimize_as' option to the
3198 type constraint, which allows for a
3199 hand optimized version of the type
3200 constraint to be used when possible.
3201 - Any internally created type constraints
3202 now provide an optimized version as well.
3204 0.15 Sun. Nov. 5, 2006
3206 This version of Moose *must* have Class::MOP 0.36 in order
3207 to work correctly. A number of small internal tweaks have
3208 been made in order to be compatible with that release.
3210 * Moose::Util::TypeConstraints
3211 - added &unimport so that you can clean out
3212 your class namespace of these exported
3215 * Moose::Meta::Class
3216 - fixed minor issue which occasionally
3217 comes up during global destruction
3219 - moved Moose::Meta::Method::Overriden into
3223 - moved Moose::Meta::Role::Method into
3226 * Moose::Meta::Attribute
3227 - changed how we do type checks so that
3228 we reduce the overall cost, but still
3231 - moved accessor generation methods to
3232 Moose::Meta::Method::Accessor to
3233 conform to the API changes from
3236 * Moose::Meta::TypeConstraint
3237 - changed how constraints are compiled
3238 so that we do less recursion and more
3239 iteration. This makes the type check
3241 - moved Moose::Meta::TypeConstraint::Union
3244 * Moose::Meta::Method::Accessor
3245 - created this from methods formerly found in
3246 Moose::Meta::Attribute
3248 * Moose::Meta::Role::Method
3249 - moved this from Moose::Meta::Role
3251 * Moose::Meta::Method::Overriden
3252 - moved this from Moose::Meta::Class
3254 * Moose::Meta::TypeConstraint::Union
3255 - moved this from Moose::Meta::TypeConstraint
3257 0.14 Mon. Oct. 9, 2006
3259 * Moose::Meta::Attribute
3260 - fixed lazy attributes which were not getting
3261 checked with the type constraint (thanks ashley)
3262 - added tests for this
3263 - removed the over-enthusiastic DWIMery of the
3264 automatic ArrayRef and HashRef defaults, it
3265 broke predicates in an ugly way.
3266 - removed tests for this
3268 0.13 Sat. Sept. 30, 2006
3270 This version of Moose *must* have Class::MOP 0.35 in order
3271 to work correctly. A number of small internal tweaks have
3272 been made in order to be compatible with that release.
3275 - Removed the use of UNIVERSAL::require to be a better
3276 symbol table citizen and remove a dependency
3277 (thanks Adam Kennedy)
3279 **~~ removed experimental & undocumented feature ~~**
3280 - commented out the 'method' and 'self' keywords, see the
3281 comments for more info.
3284 - added a FAQ and WTF files to document frequently
3285 asked questions and common problems
3287 * Moose::Util::TypeConstraints
3288 - added GlobRef and FileHandle type constraint
3289 - added tests for this
3291 * Moose::Meta::Attribute
3292 - if your attribute 'isa' ArrayRef of HashRef, and you have
3293 not explicitly set a default, then make the default DWIM.
3294 This will also work for subtypes of ArrayRef and HashRef
3296 - you can now auto-deref subtypes of ArrayRef or HashRef too.
3297 - new test added for this (thanks to ashley)
3300 - added basic support for runtime role composition
3301 but this is still *highly experimental*, so feedback
3302 is much appreciated :)
3303 - added tests for this
3305 * Moose::Meta::TypeConstraint
3306 - the type constraint now handles the coercion process
3307 through delegation, this is to support the coercion
3310 * Moose::Meta::TypeConstraint::Union
3311 - it is now possible for coercions to be performed
3313 - added tests for this (thanks to konobi)
3315 * Moose::Meta::TypeCoercion
3316 - properly capturing error when type constraint
3320 - Scalar::Util 1.18 is bad on Win32, so temporarily
3321 only require version 1.17 for Win32 and cygwin.
3322 (thanks Adam Kennedy)
3324 0.12 Sat. Sept. 1, 2006
3326 - Recipe5 (subtypes & coercion) has been written
3329 - fixed "bad meta" error message to be more descriptive
3330 - fixed &unimport to not remove the &inner and &super
3331 keywords because we need to localize them.
3332 - fixed number of spelling/grammer issues, thanks Theory :)
3334 **~~ experimental & undocumented feature ~~**
3335 - added the method and self keywords, they are basically
3336 just sugar, and they may not stay around.
3339 - added &dump method to easily Data::Dumper
3342 * Moose::Meta::TypeConstraint
3343 - added the &is_a_type_of method to check both the current
3344 and the subtype of a method (similar to &isa with classes)
3347 - this is now a subclass of Class::MOP::Module, and no longer
3348 creates the _role_meta ugliness of before.
3349 - fixed tests to reflect this change
3351 0.11 Wed. July 12, 2006
3353 - added an &unimport method to remove all the keywords
3354 that Moose will import, simply add 'no Moose' to the
3355 bottom of your class file.
3358 - fixed some test failures caused by a forgotten test
3361 0.10 Thurs. July 6, 2006
3363 - improved error message when loading modules so
3364 it is less confusing when you load a role.
3365 - added &calculate_all_roles method to
3366 Moose::Meta::Class and Moose::Meta::Role
3369 This module has been tested against Class::MOP 0.30
3370 but it does not yet utilize the optimizations
3371 it makes available. Stay tuned for that ;)
3373 0.09_03 Fri. June 23, 2006
3374 ++ DEVELOPER RELEASE ++
3376 - 'use strict' and 'use warnings' are no longer
3377 needed in Moose classes, Moose itself will
3378 turn them on for you.
3379 - added tests for this
3380 - moved code from exported subs to private methods
3381 in Moose::Meta::Class
3384 - as with Moose, strict and warnings are
3385 automatically turned on for you.
3386 - added tests for this
3389 - now handles an edge case for override errors
3390 - added tests for this
3391 - added some more edge case tests
3393 0.09_02 Tues. May 16, 2006
3394 ++ DEVELOPER RELEASE ++
3396 - added prototypes to the exported subs
3400 - added prototypes to the exported subs
3403 * Moose::Util::TypeConstraints
3404 - cleaned up prototypes for the subs
3407 0.09_01 Fri. May 12, 2006
3408 ++ DEVELOPER RELEASE ++
3409 - This release works in combination with
3410 Class::MOP 0.29_01, it is a developer
3411 release because it uses the a new
3412 instance sub-protocol and a fairly
3413 complete Role implementation. It has
3414 not yet been optimized, so it slower
3415 the the previous CPAN version. This
3416 release also lacks good updated docs,
3417 the official release will have updated docs.
3420 - refactored the keyword exports
3421 - 'with' now checks Role validaity and
3422 accepts more than one Role at a time
3423 - 'extends' makes metaclass adjustments as
3424 needed to ensure metaclass compatibility
3427 - refactored the keyword exports
3428 - 'with' now checks Role validaity and
3429 accepts more than one Role at a time
3431 * Moose::Util::TypeConstraints
3432 - added the 'enum' keyword for simple
3433 string enumerations which can be used as
3435 - see example of usage in t/202_example.t
3438 - more careful checking of params to new()
3441 - much work done on the role composition
3442 - many new tests for conflict detection
3443 and composition edge cases
3444 - not enough documentation, I suggest
3445 looking at the tests
3447 * Moose::Meta::Instance
3448 - added new Instance metaclass to support
3449 the new Class::MOP instance protocol
3451 * Moose::Meta::Class
3452 - some small changes to support the new
3454 - some small additions to support Roles
3456 * Moose::Meta::Attribute
3457 - some improvements to the accessor generation code
3459 - some small changes to support the new
3461 - (still somewhat) experimental delegation support
3462 with the 'handles' option
3463 - added several tests for this
3464 - no docs for this yet
3466 0.05 Thurs. April 27, 2006
3468 - keywords are now exported with Sub::Exporter
3469 thanks to chansen for this commit
3470 - has keyword now takes a 'metaclass' option
3471 to support custom attribute meta-classes
3472 on a per-attribute basis
3473 - added tests for this
3474 - the 'has' keyword not accepts inherited slot
3475 specifications (has '+foo'). This is still an
3476 experimental feature and probably not finished
3477 see t/038_attribute_inherited_slot_specs.t for
3478 more details, or ask about it on #moose
3479 - added tests for this
3482 - keywords are now exported with Sub::Exporter
3484 * Moose::Utils::TypeConstraints
3485 - reorganized the type constraint hierarchy, thanks
3486 to nothingmuch and chansen for his help and advice
3488 - added some tests for this
3489 - keywords are now exported with Sub::Exporter
3490 thanks to chansen for this commit
3492 * Moose::Meta::Class
3493 - due to changes in Class::MOP, we had to change
3494 construct_instance (for the better)
3496 * Moose::Meta::Attribute
3497 - due to changes in Class::MOP, we had to add the
3498 initialize_instance_slot method (it's a good thing)
3500 * Moose::Meta::TypeConstraint
3501 - added type constraint unions
3502 - added tests for this
3503 - added the is_subtype_of predicate method
3504 - added tests for this
3506 0.04 Sun. April 16th, 2006
3508 - Roles can now consume other roles
3509 - added tests for this
3510 - Roles can specify required methods now with
3511 the requires() keyword
3512 - added tests for this
3515 - ripped out much of it's guts ,.. much cleaner now
3516 - added required methods and correct handling of
3517 them in apply() for both classes and roles
3518 - added tests for this
3519 - no longer adds a does() method to consuming classes
3520 it relys on the one in Moose::Object
3521 - added roles attribute and some methods to support
3522 roles consuming roles
3524 * Moose::Meta::Attribute
3525 - added support for triggers on attributes
3526 - added tests for this
3527 - added support for does option on an attribute
3528 - added tests for this
3530 * Moose::Meta::Class
3531 - added support for attribute triggers in the
3533 - added tests for this
3536 - Moose no longer creates a subtype for your class
3537 if a subtype of the same name already exists, this
3538 should DWIM in 99.9999% of all cases
3540 * Moose::Util::TypeConstraints
3541 - fixed bug where incorrect subtype conflicts were
3543 - added test for this
3546 - this class can now be extended with 'use base' if
3547 you need it, it properly loads the metaclass class now
3548 - added test for this
3550 0.03_02 Wed. April 12, 2006
3552 - you must now explictly use Moose::Util::TypeConstraints
3553 it no longer gets exported for you automatically
3556 - new() now accepts hash-refs as well as key/value lists
3557 - added does() method to check for Roles
3558 - added tests for this
3560 * Moose::Meta::Class
3561 - added roles attribute along with the add_role() and
3563 - added tests for this
3566 - now adds a does() method to consuming classes
3567 which tests the class's hierarchy for roles
3568 - added tests for this
3570 0.03_01 Mon. April 10, 2006
3572 - added new Role recipe (no content yet, only code)
3575 - added 'with' keyword for Role support
3576 - added test and docs for this
3577 - fixed subtype quoting bug
3578 - added test for this
3582 - added test and docs
3584 * Moose::Util::TypeConstraints
3585 - added the message keyword to add custom
3586 error messages to type constraints
3589 - the meta role to support Moose::Role
3590 - added tests and docs
3592 * Moose::Meta::Class
3593 - moved a number of things from Moose.pm
3594 to here, they should have been here
3597 * Moose::Meta::Attribute
3598 - moved the attribute option macros here
3599 instead of putting them in Moose.pm
3601 * Moose::Meta::TypeConstraint
3602 - added the message attributes and the
3604 - added tests and docs for this
3606 0.03 Thurs. March 30, 2006
3608 - added the Moose::Cookbook with 5 recipes,
3609 describing all the stuff Moose can do.
3612 - fixed an issue with &extends super class loading
3613 it now captures errors and deals with inline
3614 packages correctly (bug found by mst, solution
3616 - added super/override & inner/augment features
3617 - added tests and docs for these
3620 - BUILDALL now takes a reference of the %params
3621 that are passed to &new, and passes that to
3624 * Moose::Util::TypeConstraints
3625 - Type constraints now survive runtime reloading
3626 - added test for this
3628 * Moose::Meta::Class
3629 - fixed the way attribute defaults are handled
3630 during instance construction (bug found by chansen)
3632 * Moose::Meta::Attribute
3633 - read-only attributes now actually enforce their
3634 read-only-ness (this corrected in Class::MOP as
3637 0.02 Tues. March 21, 2006
3639 - many more tests, fixing some bugs and
3641 - &extends now loads the base module with
3643 - added UNIVERSAL::require to the
3646 - each new Moose class will also create
3647 and register a subtype of Object which
3648 correspond to the new Moose class.
3649 - the 'isa' option in &has now only
3650 accepts strings, and will DWIM in
3653 * Moose::Util::TypeConstraints
3654 - added type coercion features
3655 - added tests for this
3656 - added support for this in attributes
3657 and instance construction
3659 - type construction no longer creates a
3660 function, it registers the type instead.
3661 - added several functions to get the
3665 - BUILDALL and DEMOLISHALL were broken
3666 because of a mis-named hash key, Whoops :)
3668 * Moose::Meta::Attribute
3669 - adding support for coercion in the
3670 autogenerated accessors
3672 * Moose::Meta::Class
3673 - adding support for coercion in the
3674 instance construction
3676 * Moose::Meta::TypeConstraint
3677 * Moose::Meta::TypeCoercion
3678 - type constraints and coercions are now
3679 full fledges meta-objects
3681 0.01 Wed. March 15, 2006
3682 - Moooooooooooooooooose!!!