1 Also see Moose::Manual::Delta for more details of, and workarounds
2 for, noteworthy changes.
8 * Almost every native delegation method which changes the attribute value
9 now has an explicitly documented return value. In general, this return
10 value matches what Perl would return for the same operation. (Dave Rolsky)
12 * Lots of work on native delegation documentation, including documenting
13 what arguments each native delegation method allows or requires. (Dave
16 * Passing an odd number of args to ->new() now gives a more useful warning
17 than Perl's builtin warning. Suggested by Sir Robert Burbridge. (Dave
22 * A number of native trait methods which expected strings as arguments did
23 not allow the empty string. This included Array->join, String->match,
24 String->replace, and String->substr. Reported by Whitney Jackson. RT
27 * 'no Moose' no longer inadvertently removes imports it didn't create
28 itself. RT #60013. (Florian Ragwitz, doy)
30 * Roles now support passing an array reference of method names to method
31 modifier sugar functions. (doy)
33 * Native traits no longer use optimized inlining routines if the instance
34 requests it (in particular, if inline_get_slot_value doesn't return
35 something that can be assigned to). This should fix issues with
42 * Major changes to Native Traits, most of which make them act more like
43 "normal" attributes. This should be mostly compatible with existing code,
44 but see Moose::Manual::Delta for details.
46 * A few native traits (String, Counter, Bool) provide default values of "is"
47 and "default" when you created an attribute. Allowing them to provide
48 these values is now deprecated. Supply the value yourself when creating
51 * New option 'trait_aliases' for Moose::Exporter, which will allow you to
52 generate non-global aliases for your traits (and allow your users to
53 rename the aliases, etc). (doy)
55 * 'use Moose' and 'use Moose::Role' now accept a '-meta_name' option, to
56 determine which name to install the 'meta' name under. Passing 'undef'
57 to this option will suppress generation of the meta method entirely. (doy)
59 * Moose now warns if it overwrites an existing method named "meta" in your
60 class when you "use Moose". (doy)
64 * Native Trait delegations are now all generated as inline code. This should
65 be much faster than the previous method of delegation. In the best case,
66 native trait methods will be very highly optimized.
68 * Reinitializing a metaclass no longer removes the existing method and
69 attribute objects (it instead fixes them so they are correct for the
70 reinitialized metaclass). This should make the order of loading many
71 MooseX modules less of an issue. (doy)
73 * The Moose::Manual docs have been revised and updated. (Dave Rolsky)
77 * If an attribute was weak, setting it to a non-ref value after the object
78 was constructed caused an error. Now we only call weaken when the new
81 * t/040_type_constraints/036_match_type_operator.t failed on 5.13.5+. Fixed
82 based on a patch from Andreas Koenig.
84 1.14 Tue, Sep 21, 2010
88 * Work around what looks like a bug in List::MoreUtils::any. This bug caused
89 a weird error when defining the same union type twice, but only when using
90 MooseX::Types. Reported by Curtis Jewell. RT #61001. (Dave Rolsky)
92 1.13 Mon, Sep 13, 2010
96 * The deprecation warnings for alias and excludes are back, use -alias and
97 -excludes instead. (Dave Rolsky)
101 * When composing one role into another and there is an attribute conflict,
102 the error message now includes the attribute name. Reported by Sam
103 Graham. RT #59985. (Dave Rolsky)
105 * When a class is made immutable, the does_role method is overridden with a
106 much faster version that simply looks role names up in a hash. Code which
107 uses lots of role-based type constraints should be faster. (Dave Rolsky)
109 1.12 Sat, Aug 28, 2010
113 * Fix the MANIFEST. Fixes RT #60831, reported by Alberto Simões.
115 1.11 Fri, Aug 27, 2010
119 * An attribute in a subclass can now override the value of "is". (doy)
121 * The deprecation warnings for alias and excludes have been turned back off
122 for this release, to give other module authors a chance to tweak their
127 * mro::get_linear_isa was being called as a function rather than a method,
128 which caused problems with Perl 5.8.x. (t0m)
130 * Union types always created a type constraint, even if their constituent
131 constraints did not have any coercions. This bogus coercion always
132 returned undef, which meant that a union which included Undef as a member
133 always coerced bad values to undef. Reported by Eric Brine. RT
134 #58411. (Dave Rolsky)
136 * Union types with coercions would always fall back to coercing the value to
137 undef (unintentionally). Now if all the coercions for a union type fail,
138 the value returned by the coercion is the original value that we attempted
139 to coerce. (Dave Rolsky).
141 1.10 Sun, Aug 22, 2010
145 * The long-deprecated alias and excludes options for role applications now
146 issue a deprecation warning. Use -alias and -excludes instead. (Dave
151 * Inlined code no longer stringifies numeric attribute defaults. (vg, doy)
153 * default => undef now works properly. (doy)
155 * Enum type constraints now throw errors if their values are nonsensical.
160 * Optimizations that should help speed up compilation time (Dave Rolsky).
162 1.09 Tue, Jul 25, 2010
166 * You can no longer pass "coerce => 1" for an attribute unless its type
167 constraint has a coercion defined. Doing so will issue a deprecation
168 warning. (Dave Rolsky)
170 * Previously, '+foo' only allowed a specific set of options to be
171 overridden, which made it impossible to change attribute options related
172 to extensions. Now we blacklist some options, and anything else is
173 allowed. (doy, Tuomas Jormola)
175 * Most features which have been declared deprecated now issue a warning using
176 Moose::Deprecated. Warnings are issued once per calling package, not
177 repeatedly. See Moose::Deprecated for information on how you can shut
178 these warnings up entirely. Note that deprecated features will eventually
179 be removed, so shutting up the warnings may not be the best idea. (Dave
182 * Removed the long-deprecated Moose::Meta::Role->alias_method method. (Dave
187 * We no longer unimport strict and warnings when Moose, Moose::Role, or
188 Moose::Exporter are unimported. Doing this was broken if the user
189 explicitly loaded strict and warnings themself, and the results could be
190 generally surprising. We decided that it was best to err on the side of
191 safety and leave these on. Reported by David Wheeler. RT #58310. (Dave
194 * New with_traits helper function in Moose::Util. (doy)
198 * Accessors will no longer be inlined if the instance metaclass isn't
201 * Use Perl 5.10's new recursive regex features, if possible, for the type
202 constraint parser. (doy, nothingmuch)
206 * Attributes now warn if their accessors overwrite a locally defined
207 function (not just method). (doy)
211 * Bump our required perl version to 5.8.3, since earlier versions fail tests
212 and aren't easily installable/testable.
214 1.08 Tue, Jun 15, 2010
218 * Refactored a small amount of Moose::Meta::Method::Constructor to allow it
219 to be overridden more easily (doy).
221 1.07 Sat, Jun 05, 2010
225 * Fixed a minor metaclass compatibility fixing bug dealing with immutable
226 classes and non-class metaclass traits (doy, dougdude).
228 1.06 Tue, Jun 01, 2010
232 * Added '0+' overloading in Moose::Meta::TypeConstraint so that we can
233 more uniformly compare type constraints between 'classic' Moose type
234 constraints and MooseX::Types based type constraints.
236 1.05 Thu, May 20, 2010
240 * Packages and modules no longer have methods - this functionality was
241 moved back up into Moose::Meta::Class and Moose::Meta::Role individually
242 (through the Class::MOP::Mixin::HasMethods mixin) (doy).
244 * BUILDALL is now called by Moose::Meta::Class::new_object, rather than by
245 Moose::Object::new. (doy)
249 * strict and warnings are now unimported when Moose, Moose::Role, or
250 Moose::Exporter are unimported. (doy, Adam Kennedy)
252 * Added a 'consumers' method to Moose::Meta::Role for finding all
253 classes/roles which consume the given role. (doy)
257 * Fix has '+attr' in Roles to explode immediately, rather than when the role
258 is applied to a class (t0m).
260 * Fix type constraint validation messages to not include the string 'failed'
261 twice in the same sentence (Florian Ragwitz).
263 * New type constraints will default to being unequal, rather than equal
266 * The tests no longer check for perl's behavior of clobbering $@, which has
267 been fixed in perl-5.13.1 (Florian Ragwitz).
269 * Metaclass compatibility fixing has been completely rewritten, and should
270 be much more robust. (doy)
272 1.04 Thu, May 20, 2010
274 * This release was broken and has been deleted from CPAN shortly after its
277 1.03 Thu, May 06, 2010
281 * Allow specifying required versions when setting superclasses or applying
282 roles (Florian Ragwitz).
284 1.02 Sat, May 01, 2010
288 * Stop the natatime method provided by the native Array trait from returning
289 an exhausted iterator when being called with a callback. (Florian Ragwitz)
291 * Make Moose::Meta::TypeConstraint::Class correctly reject RegexpRefs.
294 * Calling is_subtype_of on a Moose::Meta::TypeConstraint::Class with itself or
295 the class the TC represents as an argument incorrectly returned true. This
296 behavior is correct for is_type_of, not is_subtype_of. (Guillermo Roditi)
298 * Use File::Temp for temp files created during tests. Previously, files were
299 written to the t/ dir, which could cause problems of the user running the
300 tests did not have write access to that directory.. (Chris Weyl, Ævar
303 * Pass role arguments along when applying roles to instances. (doy, lsm)
305 1.01 Fri, Mar 26, 2010
309 * The handles option now also accepts a role type constraint in addition to a
310 plain role name. (Florian Ragwitz)
314 * Record the Sartak/doy debt properly in Changes (perigrin)
316 1.00 Tue, Mar 25, 2010
320 * Moose::Meta::Attribute::Native::Trait::Code no longer creates reader
321 methods by default. (Florian Ragwitz)
325 * Improve various parts of the documentation and fix many typos.
326 (Dave Rolsky, Mateu Hunter, Graham Knop, Robin V, Jay Hannah, Jesse Luehrs)
330 * Paid the $10 debt to doy from 0.80 Sat, Jun 6, 2009 (Sartak)
332 0.99 Mon, Mar 8, 2010
336 * New method find_type_for in Moose::Meta::TypeConstraint::Union, for finding
337 which member of the union a given value validates for. (Cory Watson)
341 * DEMOLISH methods in mutable subclasses of immutable classes are now called
342 properly (Chia-liang Kao, Jesse Luehrs)
346 * Added Moose::Manual::Support that defines the support, compatiblity, and
347 release policies for Moose. (Chris Prather)
349 0.98 Wed, Feb 10, 2010
353 * An internals change in 0.97 broke role application to an instance in some
354 cases. The bug occurred when two different roles were applied to different
355 instances of the same class. (Rafael Kitover)
358 0.97 Tue, Feb 9, 2010
362 * Calling ->reinitialize on a cached anonymous class effectively uncached
363 the metaclass object, causing the metaclass to go out of scope
364 unexpectedly. This could easily happen at a distance by applying a
365 metarole to an anonymous class. (Dave Rolsky).
367 0.96 Sat, Feb 6, 2010
371 * ScalarRef is now a parameterized type. You can now specify a type
372 constraint for whatever the reference points to. (Closes RT#50857)
373 (Michael G. Schwern, Florian Ragwitz)
377 * ScalarRef now accepts references to other references. (Closes RT#50934)
380 0.95 Thu, Feb 4, 2010
384 * Moose::Meta::Attribute::Native::Trait::Code now provides execute_method as
385 a delegation option. This allows the code reference to be called as a
386 method on the object. (Florian Ragwitz)
390 * Moose::Object::does no longer checks the entire inheritance tree, since
391 Moose::Meta::Class::does_role already does this. (doy)
393 * Moose::Util::add_method_modifier (and subsequently the sugar functions
394 Moose::before, Moose::after, and Moose::around) can now accept arrayrefs,
395 with the same behavior as lists. Types other than arrayref and regexp
396 result in an error. (Dylan Hardison)
398 0.94 Mon, Jan 18, 2010
402 * Please see the changes listed for 0.93_01 and Moose::Manual::Delta.
406 * Improved support for anonymous roles by changing various APIs to take
407 Moose::Meta::Role objects as well as role names. This included
409 - Moose::Meta::Class->does_role
410 - Moose::Meta::Role->does_role
411 - Moose::Util::does_role
412 - Moose::Util::apply_all_roles
413 - Moose::Util::ensure_all_roles
414 - Moose::Util::search_class_by_role
416 Requested by Shawn Moore. Addresses RT #51143 (and then some). (Dave Rolsky)
420 * Fix handling of non-alphanumeric attributes names like '@foo'. This should
421 work as long as the accessor method names are explicitly set to valid Perl
422 method names. Reported by Doug Treder. RT #53731. (Dave Rolsky)
425 0.93_03 Tue, Jan 5, 2010
429 * Portability fixes to our XS code so we compile with 5.8.8 and Visual
430 C++. Fixes RT #53391. Reported by Taro Nishino. (rafl)
433 0.93_02 Tue, Jan 5, 2010
437 * Depend on Class::MOP 0.97_01 so we can get useful results from CPAN
438 testers. (Dave Rolsky)
441 0.93_01 Mon, Jan 4, 2010
445 See Moose::Manual::Delta for more details on backwards compatiblity issues.
447 * Role attributes are now objects of the Moose::Meta::Role::Attribute
448 class. (Dave Rolsky).
450 * There were major changes to how metaroles are applied. We now distinguish
451 between metaroles for classes vs those for roles. See the
452 Moose::Util::MetaRole docs for details. (Dave Rolsky)
454 * The old MetaRole API has been deprecated, but will continue to
455 work. However, if you are applying an attribute metaclass role, this may
456 break because of the fact that roles now have an attribute metaclass
459 * Moose::Util::MetaRole::apply_metaclass_roles is now called
460 apply_metaroles. The old name is deprecated. Dave Rolsky>
462 * The unimport subs created by Moose::Exporter now clean up re-exported
463 functions like blessed and confess, unless the caller imported them from
464 somewhere else too. See Moose::Manua::Delta for backcompat details. (rafl)
466 [ENHANCEMENTS AND BUG FIXES]
468 * Changed the Str constraint to accept magic lvalue strings like one gets from
469 substr et al, again. (sorear)
471 * Sped up the type constraint parsing regex. (Sam Vilain)
473 * The Moose::Cookbook::Extending::Recipe2 recipe was broken. Fix suggested by
476 * Added Moose::Util::TypeConstraints exports when using oose.pm to allow
477 easier testing of TypeConstraints from the command line. (perigrin)
479 * Added a with_immutable test function to Test::Moose, to run a block of tests
480 with and without certain classes being immutable. (doy)
482 * We now use Module::Install extensions explicitly to avoid confusing errors
483 if they're not installed. We use Module::Install::AuthorRequires to stop
484 test extraction and general failures if you don't have the author side
485 dependencies installed.
487 * Fixed a grammar error in Moose::Cookbook::Basics::Recipe4. rt.cpan.org
488 #51791. (Amir E. Aharoni)
491 0.93 Thu, Nov 19, 2009
493 - Calling $object->new() is no longer deprecated, and no longer
497 - The get_attribute_map method is now deprecated. (Dave Rolsky)
499 * Moose::Meta::Method::Delegation
500 - Preserve variable aliasing in @_ for delegated methods, so that
501 altering @_ affects the passed value. (doy)
503 * Moose::Util::TypeConstraints
504 - Allow array refs for non-anonymous form of enum and duck_type, not
505 just anonymous. The non-arrayref forms may be removed in the
507 - Changed Str constraint to not accept globs (*STDIN or *FOO). (chansen)
508 - Properly document Int being a subtype of Str. (doy)
511 - Moose::Exporter using modules can now export their functions to the
512 main package. This applied to Moose and Moose::Role, among
513 others. (nothingmuch)
515 * Moose::Meta::Attribute
516 - Don't remove attribute accessors we never installed, during
517 remove_accessors. (doy)
519 * Moose::Meta::Attribute::Native::Trait::Array
520 - Don't bypass prototype checking when calling List::Util::first, to
521 avoid a segfault when it is called with a non-code argument. (doy)
523 * Moose::Meta::Attribute::Native::Trait::Code
524 - Fix passing arguments to code execute helpers. (doy)
526 0.92 Tue, Sep 22, 2009
527 * Moose::Util::TypeConstraints
528 - added the match_on_type operator (Stevan)
529 - added tests and docs for this (Stevan)
532 - Metaclass compat fixing should already happen recursively, there's no
533 need to explicitly walk up the inheritance tree. (doy)
535 * Moose::Meta::Attribute
536 - Add tests for set_raw_value and get_raw_value. (nothingmuch)
538 0.91 Thu, Sep 17, 2009
540 - Don't import any functions, in order to avoid polluting our namespace
541 with things that can look like methods (blessed, try, etc)
544 * Moose::Meta::Method::Constructor
545 - The generated code needs to called Scalar::Util::blessed by its
546 fully-qualified name or else Perl can interpret the call to blessed as
547 an indirect method call. This broke Search::GIN, which in turn broke
548 KiokuDB. (nothingmuch)
550 0.90 Tue, Sep 15, 2009
551 * Moose::Meta::Attribute::Native::Trait::Counter
552 * Moose::Meta::Attribute::Native::Trait::String
553 - For these two traits, an attribute which did not explicitly provide
554 methods to handles magically ended up delegating *all* the helper
555 methods. This has been removed. You must be explicit in your handles
556 declaration for all Native Traits. (Dave Rolsky)
559 - DEMOLISHALL behavior has changed. If any DEMOLISH method dies, we make
560 sure to rethrow its error message. However, we also localize $@ before
561 this so that if all the DEMOLISH methods success, the value of $@ will
562 be preserved. (nothingmuch and Dave Rolsky)
563 - We now also localize $? during object destruction. (nothingmuch and
565 - The handling of DEMOLISH methods was broken for immutablized classes,
566 which were not receiving the value of
567 Devel::GlobalDestruction::in_global_destruction.
568 - These two fixes address some of RT #48271, reported by Zefram.
569 - This is all now documented in Moose::Manual::Construction.
570 - Calling $object->new() is now deprecated. A warning will be
574 - Added more hooks to customize how roles are applied. The role
575 summation class, used to create composite roles, can now be changed
576 and/or have meta-roles applied to it. (rafl)
577 - The get_method_list method no longer explicitly excludes the "meta"
578 method. This was a hack that has been replaced by better hacks. (Dave
581 * Moose::Meta::Method::Delegation
582 - fixed delegated methods to make sure that any modifiers attached to
583 the accessor being delegated on will be called (Stevan)
584 - added tests for this (Stevan)
587 - Moose no longer warns when a class that is being made immutable has
588 mutable ancestors. While in theory this is a good thing to warn about,
589 we found so many exceptions to this that doing this properly became
592 0.89_02 Thu, Sep 10, 2009
593 * Moose::Meta::Attribute::Native
594 - Fix Hash, which still had 'empty' instead of 'is_empty'. (hdp)
596 * Moose::Meta::Attribute::Native::Trait::Array
597 - Added a number of functions from List::Util and List::MoreUtils,
598 including reduce, shuffle, uniq, and natatime. (doy)
601 - This module will now generate an init_meta method for your exporting
602 class if you pass it options for
603 Moose::Util::MetaRole::apply_metaclass_roles or
604 apply_base_class_roles. This eliminates a lot of repetitive
605 boilerplate for typical MooseX modules. (doy).
606 - Documented the with_meta feature, which is a replacement for
607 with_caller. This feature was added by josh a while ago.
608 - The with_caller feature is now deprecated, but will not issue a
609 warning yet. (Dave Rolsky)
610 - If you try to wrap/export a subroutine which doesn't actually exist,
611 Moose::Exporter will warn you about this. (doy)
613 * Moose::Meta::Role::Application::ToRole
614 - When a role aliased a method from another role, it was only getting
615 the new (aliased) name, not the original name. This differed from what
616 happens when a class aliases a role's methods. If you _only_ want the
617 aliased name, make sure to also exclue the original name. (Dave
620 0.89_01 Wed Sep 2, 2009
621 * Moose::Meta::Attribute
622 - Added the currying syntax for delegation from AttributeHelpers to the
623 existing delegation API. (hdp)
625 * Moose::Meta::Attribute::Native
626 - We have merged the functionality of MooseX::AttributeHelpers into the
627 Moose core with some API tweaks. You can continue to use
628 MooseX::AttributeHelpers, but it will not be maintained except
629 (perhaps) for critical bug fixes in the future. See
630 Moose::Manual::Delta for details. (hdp, jhannah, rbuels, Sartak,
633 * Moose::Error::Croak
634 * Moose::Error::Confess
635 - Clarify documentation on how to use different error-throwing
636 modules. (Curtis Jewell)
639 - Correct POD for builder to point to Recipe8, not 9. (gphat)
642 - When a nonexistent sub name is passed to as_is, with_caller, or
643 with_meta, throw a warning and skip the exporting, rather than
644 installing a broken sub. (doy)
647 - Moose now warns if you call C<make_immutable> for a class with mutable
650 0.89 Thu Aug 13, 2009
651 * Moose::Manual::Attributes
652 - Clarify "is", include discussion of "bare". (Sartak)
654 * Moose::Meta::Role::Method::Conflicting
655 * Moose::Meta::Role::Application::ToClass
656 - For the first set of roles involved in a conflict, report all
657 unresolved method conflicts, not just the first method. Fixes #47210
658 reported by Ovid. (Sartak)
660 * Moose::Meta::TypeConstraint
661 - Add assert_valid method to use a TypeConstraint for assertion (rjbs)
664 - Make "use Moose -metaclass => 'Foo'" do alias resolution, like -traits
666 - Allow specifying role options (alias, excludes, MXRP stuff) in the
667 arrayref passed to "use Moose -traits" (doy)
670 - Add functions meta_class_alias and meta_attribute_alias for creating
671 aliases for class and attribute metaclasses and metatraits. (doy)
673 * Moose::Meta::Attribute
674 * Moose::Meta::Method::Accessor
675 - A trigger now receives the old value as a second argument, if the
676 attribute had one. (Dave Rolsky)
678 * Moose::Meta::Method::Constructor
679 - Fix a bug with $obj->new when $obj has stringify overloading.
680 Reported by Andrew Suffield [rt.cpan.org #47882] (Sartak)
681 - However, we will probably deprecate $obj->new, so please don't start
682 using it for new code!
684 * Moose::Meta::Role::Application
685 * Moose::Meta::Role::Application::RoleSummation
686 - Rename alias and excludes to -alias and -excludes (but keep the old
687 names for now, for backcompat) (doy)
689 0.88 Fri Jul 24, 2009
690 * Moose::Manual::Contributing
691 - Re-write the Moose::Manual::Contributing document to reflect
692 the new layout and methods of work for the Git repository. All
693 work now should be done in topic branches and reviewed by a
694 core committer before being applied to master. All releases
695 are done by a cabal member and merged from master to
696 stable. This plan was devised by Yuval, blame him. (perigrin)
699 - Create metaclass attributes for the different role application
702 * Moose::Util::MetaRole
703 - Allow applying roles to a meta role's role application
706 * Moose::Meta::Attribute
707 - Add weak_ref to allowed options for "has '+foo'" (mst)
709 * Moose::Meta::Method::Accessor
710 - No longer uses inline_slot_access in accessors, to support
711 non-lvalue-based meta instances. (sorear)
714 * Moose::Meta::Method::Delegation
715 - Once again allow class names as well as objects for
716 delegation. This was changed in 0.86.
719 * Moose::Meta::Class::Immutable::Trait
720 - Fixes to work with the latest Class::MOP.
722 * Moose::Meta::Method::Delegation
723 - Delegation now dies with a more useful error message if the
724 attribute's accessor returns something defined but
727 0.85 Fri, Jun 26, 2009
728 * Moose::Meta::Attribute
729 - The warning for 'no associated methods' is now split out into
730 the _check_associated_methods method, so that extensions can
731 safely call 'after install_accessors => ...'. This fixes a
732 warning from MooseX::AttributeHelpers. (hdp)
734 0.84 Fri, Jun 26, 2009
736 - has now sets definition_context for attributes defined in
739 * Moose::Meta::Attribute
740 - When adding an attribute to a metaclass, if the attribute has
741 no associated methods, it will give a deprecation
743 - Methods generated by delegation were not being added to
744 associated_methods. (hdp)
745 - Attribute accessors (reader, writer, accessor, predicate,
746 clearer) now warn if they overwrite an existing method. (doy)
747 - Attribute constructors now warn very noisily about unknown (or
748 misspelled) arguments
750 * Moose::Util::TypeConstraints
751 - Deprecated the totally useless Role type name, which just
752 checked if $object->can('does'). Note that this is _not_ the
753 same as a type created by calling role_type('RoleName').
755 * Moose::Util::TypeConstraints
756 * Moose::Meta::TypeConstraint::DuckType
757 - Reify duck type from a regular subtype into an actual class
759 - Document this because Sartak did all my work for me
762 * Moose::Meta::Attribute
763 - Allow Moose::Meta::TypeConstraint::DuckType in handles, since
764 it is just a list of methods (Sartak)
767 - The get_*_method_modifiers methods would die if the role had
768 no modifiers of the given type (Robert Buels).
770 0.83 Tue, Jun 23, 2009
772 - Fix _construct_instance not setting the special __MOP__ object
773 key in instances of anon classes. (doy)
775 0.82 Sun, Jun 21, 2009
776 * Moose::Manual::Types
777 - Mention MooseX::Types early to avoid users falling down the
778 string parsing rathole (mst)
780 * Moose::Manual::MooseX
781 - Add warnings about class-level extensions and mention considering
782 using plain objects instead
784 0.81 Sun, Jun 7, 2009
785 * Bumped our Class::MOP prereq to the latest version (0.85), since
788 0.80 Sat, Jun 6, 2009
790 - Add FAQ about the coercion change from 0.76 because it came up
791 three times today (perigrin)
792 - Win doy $10 dollars because Sartak didn't think anybody
793 would document this fast enough (perigrin)
795 * Moose::Meta::Method::Destructor
796 - Inline a DESTROY method even if there are no DEMOLISH methods
797 to prevent unnecessary introspection in
798 Moose::Object::DEMOLISHALL
801 - A role's required methods are now represented by
802 Moose::Meta::Role::Method::Required objects. Conflicts are now
803 represented by Moose::Meta::Role::Method::Conflicting
804 objects. The benefit for end-users in that unresolved
805 conflicts generate different, more instructive, errors,
806 resolving Ovid's #44895. (Sartak)
809 - Improve the error message of "extends" as suggested by Adam
810 Kennedy and confound (Sartak)
811 - Link to Moose::Manual::Roles from Moose::Role as we now have
812 excellent documentation (Adam Kennedy)
815 - Update test suite for subname change in Class::MOP
817 - Add TODO test for infinite recursion in Moose::Meta::Class
820 0.79 Wed, May 13, 2009
822 - More fixes for Win32 problems. Reported by Robert Krimen.
825 - The DEMOLISHALL method could still blow up in some cases
826 during global destruction. This method has been made more
827 resilient in the face of global destruction's random garbage
831 - If you "also" a module that isn't loaded, the error message
832 now acknowledges that (Sartak)
835 - When your ->meta method does not return a Moose::Meta::Class,
836 the error message gave the wrong output (Sartak)
838 0.78 Tue, May 12, 2009
839 * Moose::Cookbook::FAQ and Moose::Cookbook::WTF
840 - Merged these documents into what is now Moose::Manual::FAQ
843 - Moved to Moose::Manual::Unsweetened
845 * Moose::Cookbook::Basics::Recipes 9-12
846 - Renamed to be 8-11, since recipe 8 did not exist
849 - Make Moose::Exporter import strict and warnings into packages
853 - Fix DEMOLISHALL sometimes not being able to find DEMOLISH
854 methods during global destruction (doy)
857 * Moose::Meta::Role::Application::ToClass
858 - Track the Role::Application objects created during class-role
862 - Fix metaclass incompatibility errors when extending a vanilla perl
863 class which isa Moose class with a metaclass role applied (t0m)
866 - Add a role-combination hook, _role_for_combination, for the
867 benefit of MooseX::Role::Parameterized (Sartak)
870 - Some tests were failing on Win32 because they explicit checked
871 warning output for newlines. Reported by Nickolay Platonov.
873 0.77 Sat, May 2, 2009
875 - Add explicit use of Devel::GlobalDestruction and Sub::Name
879 - Pass a boolean to DEMOLISHALL and DEMOLISH indicating whether
880 or not we are currently in global destruction (doy)
881 - Add explicit use of Devel::GlobalDestruction and Sub::Name
884 * Moose::Cookbook::FAQ
885 - Reworked much of the existing content to be more useful to
886 modern Moose hackers (Sartak)
889 - Depend on Class::MOP 0.83 instead of 0.82_01.
891 0.76 Mon, April 27, 2009
892 * Moose::Meta::TypeConstraint
893 - Do not run coercions in coerce() if the value already passes the type
896 * Moose::Meta::TypeConstraint::Class
897 - In validation error messages, specifically say that the value is not
898 an instance of the class. This should alleviate some frustrating
899 forgot-to-load-my-type bugs. rt.cpan.org #44639 (Sartak)
901 * Moose::Meta::Role::Application::ToClass
902 - Revert the class-overrides-role warning in favor of a solution outside
903 of the Moose core (Sartak)
906 - Make Test::Output optional again, since it's only used in a few files
909 0.75_01 Thu, April 23, 2009
910 * Moose::Meta::Role::Application::ToClass
911 - Moose now warns about each class overriding methods from roles it
915 - Warnings tests have standardized on Test::Output which is now an
916 unconditionally dependency (Sartak)
919 - Changes to immutabilization to work with Class::MOP 0.82_01+.
921 0.75 Mon, April 20, 2009
924 - Move validation of not inheriting from roles from Moose::extends to
925 Moose::Meta::Class::superclasses (doy)
928 - add ensure_all_roles() function to encapsulate the common "apply this
929 role unless the object already does it" pattern (hdp)
932 - Users can now select a different metaclass with the "-metaclass"
933 option to import, for classes and roles (Sartak)
936 - Make method_metaclass an attr so that it can accept a metarole
939 0.74 Tue, April 7, 2009
941 * Moose::Meta::Method::Destructor
942 - Include stack traces in the deprecation warnings.
946 - Removed the long-deprecated _apply_all_roles method.
948 * Moose::Meta::TypeConstraint
949 - Removed the long-deprecated union method.
952 0.73_02 Mon, April 6, 2009
953 * More deprecations and renamings
954 - Moose::Meta::Method::Constructor
955 - initialize_body => _initialize_body (this is always called
956 when an object is constructed)
959 - The DEMOLISHALL method could throw an exception during global
960 destruction, meaning that your class's DEMOLISH methods would
961 not be properly called. Reported by t0m.
963 * Moose::Meta::Method::Destructor
964 - Destructor inlining was totally broken by the change to the
965 is_needed method in 0.72_01. Now there is a test for this
966 feature, and it works again.
969 - Bold the word 'not' in the POD for find_meta (t0m)
971 0.73_01 Sun, April 5, 2009
973 - Call user_class->meta in fewer places, with the eventual goal
974 of allowing the user to rename or exclude ->meta
975 altogether. Instead uses Class::MOP::class_of. (Sartak)
977 * Moose::Meta::Method::Accessor
978 - If an attribute had a lazy default, and that value did not
979 pass the attribute's type constraint, it did not get the
980 message from the type constraint, instead using a generic
981 message. Test provided by perigrin.
983 * Moose::Util::TypeConstraints
984 - Add duck_type keyword. It's sugar over making sure an object
985 can() a list of methods. This is easier than jrockway's
986 suggestion to fork all of CPAN. (perigrin)
987 - add tests and documentation (perigrin)
990 - Document the fact that init_meta() returns the target class's
991 metaclass object. (hdp)
993 * Moose::Cookbook::Extending::Recipe1
994 * Moose::Cookbook::Extending::Recipe2
995 * Moose::Cookbook::Extending::Recipe3
996 * Moose::Cookbook::Extending::Recipe4
997 - Make init_meta() examples explicitly return the metaclass and
998 point out this fact. (hdp)
1000 * Moose::Cookbook::Basics::Recipe12
1001 - A new recipe, creating a custom meta-method class.
1003 * Moose::Cookbook::Meta::Recipe6
1004 - A new recipe, creating a custom meta-method class.
1006 * Moose::Meta::Class
1007 * Moose::Meta::Method::Constructor
1008 - Attribute triggers no longer receive the meta-attribute object
1009 as an argument in any circumstance. Previously, triggers
1010 called during instance construction were passed the
1011 meta-attribute, but triggers called by normal accessors were
1012 not. Fixes RT#44429, reported by Mark Swayne. (hdp)
1014 * Moose::Manual::Attributes
1015 - Remove references to triggers receving the meta-attribute object as an
1018 * Moose::Cookbook::FAQ
1019 - Remove recommendation for deprecated Moose::Policy and
1020 Moose::Policy::FollowPBP; recommend MooseX::FollowPBP
1023 * Many methods have been renamed with a leading underscore, and a
1024 few have been deprecated entirely. The methods with a leading
1025 underscore are consider "internals only". People writing
1026 subclasses or extensions to Moose should feel free to override
1027 them, but they are not for "public" use.
1029 - Moose::Meta::Class
1030 - check_metaclass_compatibility => _check_metaclass_compatibility
1032 - Moose::Meta::Method::Accessor
1033 - initialize_body => _initialize_body (this is always called
1034 when an object is constructed)
1035 - /(generate_.*_method(?:_inline)?)/ => '_' . $1
1037 - Moose::Meta::Method::Constructor
1038 - initialize_body => _initialize_body (this is always called
1039 when an object is constructed)
1040 - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
1041 - attributes => _attributes (now inherited from parent)
1042 - meta_instance => _meta_instance (now inherited from parent)
1045 - alias_method is deprecated. Use add_method
1047 0.73 Fri, March 29, 2009
1048 * No changes from 0.72_01.
1050 0.72_01 Thu, March 26, 2009
1052 - Almost every module has complete API documentation. A few
1053 methods (and even whole classes) have been intentionally
1054 excluded pending some rethinking of their APIs.
1056 * Moose::Util::TypeConstraints
1057 - Calling subtype with a name as the only argument is now an
1058 exception. If you want an anonymous subtype do:
1060 my $subtype = subtype as 'Foo';
1062 * Moose::Cookbook::Meta::Recipe7
1063 - A new recipe, creating a custom meta-instance class.
1065 * Moose::Cookbook::Basics::Recipe5
1066 - Fix various typos and mistakes. Includes a patch from Radu
1069 * Moose::Cookbook::Basics::Recipe9
1070 - Link to this recipe from Moose.pm's builder blurb
1073 - When wrapping a function with a prototype, Moose::Exporter now
1074 makes sure the wrapped function still has the same
1075 prototype. (Daisuke Maki)
1077 * Moose::Meta::Attribute
1078 - Allow a subclass to set lazy_build for an inherited
1082 - Explicitly depend on Data::OptList. We already had this dependency
1083 via Sub::Exporter, but since we're using it directly we're
1084 better off with it listed. (Sartak)
1086 * Moose::Meta::Method::Constructor
1087 - Make it easier to subclass the inlining behaviour. (Ash
1090 * Moose::Manual::Delta
1091 - Details significant changes in the history of Moose, along
1092 with recommended workarounds.
1094 * Moose::Manual::Contributing
1095 - Contributor's guide to Moose.
1097 * Moose::Meta::Method::Constructor
1098 - The long-deprecated intialize_body method has been removed
1099 (yes, spelled like that).
1101 * Moose::Meta::Method::Destructor
1102 - This is_needed method is now always a class method.
1104 * Moose::Meta::Class
1105 - Changes to the internals of how make_immutable works to match
1106 changes in latest Class::MOP.
1108 0.72 Mon, February 23, 2009
1110 * Moose::Meta::Method::Constructor
1111 - A mutable class accepted Foo->new(undef) without complaint,
1112 while an immutable class would blow up with an unhelpful
1113 error. Now, in both cases we throw a helpful error
1114 instead. Reported by doy.
1116 0.71_01 Sun, February 22, 2009
1118 - Hopefully fixed some POD errors in a few recipes that caused
1119 them to display weird on search.cpan.org.
1121 * Moose::Util::TypeConstraints
1122 - Calling type or subtype without the sugar helpers (as, where,
1123 message) is now deprecated.
1124 - The subtype function tried hard to guess what you meant, but
1125 often got it wrong. For example:
1127 my $subtype = subtype as 'ArrayRef[Object]';
1129 This caused an error in the past, but now works as you'd
1133 - Make sure Moose.pm is loaded before calling
1134 Moose->throw_error. This wasn't normally an issue, but could
1135 bite you in weird cases.
1137 0.71 Thu, February 19, 2009
1138 * Moose::Cookbook::Basics::Recipe11
1139 - A new recipe which demonstrates the use of BUILDARGS and
1140 BUILD. (Dave Rolsky)
1142 * Moose::Cookbook::Roles::Recipe3
1143 - A new recipe, applying a role to an object instance. (Dave
1147 - Allow overriding specific keywords from "also" packages. (doy)
1150 - Replace hardcoded cookbook tests with Test::Inline to ensure
1151 the tests match the actual code in the recipes. (Dave Rolsky)
1154 - Working on the above turned up a number of little bugs in the
1155 recipe code. (Dave Rolsky)
1157 * Moose::Util::TypeConstraints::Optimized
1158 - Just use Class::MOP for the optimized ClassName check. (Dave
1161 0.70 Sat, February 14, 2009
1162 * Moose::Util::TypeConstraints
1163 - Added the RoleName type (stevan)
1164 - added tests for this (stevan)
1166 * Moose::Cookbook::Basics::Recipe3
1167 - Updated the before qw[left right] sub to be a little more
1168 defensive about what it accepts (stevan)
1169 - added more tests to t/000_recipies/basics/003_binary_tree.t
1173 - We now always call DEMOLISHALL, even if a class does not
1174 define DEMOLISH. This makes sure that method modifiers on
1175 DEMOLISHALL work as expected. (doy)
1176 - added tests for this (EvanCarroll)
1178 * Moose::Util::MetaRole
1179 - Accept roles for the wrapped_method_metaclass (rafl)
1180 - added tests for this (rafl)
1182 * Moose::Meta::Attribute
1183 - We no longer pass the meta-attribute object as a final
1184 argument to triggers. This actually changed for inlined code a
1185 while back, but the non-inlined version and the docs were
1189 - Some tests tried to use Test::Warn 0.10, which had bugs. Now
1190 they require 0.11. (Dave Rolsky)
1193 - Lots of small changes to the manual, cookbook, and
1194 elsewhere. These were based on feedback from various
1195 users, too many to list here. (Dave Rolsky)
1197 0.69 Thu, February 12, 2009
1199 - Make some keyword errors use throw_error instead of croak
1200 since Moose::Exporter wraps keywords now (Sartak)
1202 * Moose::Cookbook::*
1203 - Revised every recipe for style and clarity. Also moved some
1204 documentation out of cookbook recipes and into Moose::Manual
1205 pages. This work was funded as part of the Moose docs grant
1206 from TPF. (Dave Rolsky)
1208 * Moose::Meta::Method::Delegation
1209 - If the attribute doing the delegation was not populated, the
1210 error message did not specify the attribute name
1213 0.68 Wed, February 4, 2009
1215 - Many spelling, typo, and formatting fixes by daxim.
1217 * Moose::Manual::Attributes
1218 - The NAME section in the POD used "Attribute" so search.cpan
1219 didn't resolve links from other documents properly.
1221 * Moose::Meta::Method::Overriden
1222 - Now properly spelled as Overridden. Thanks to daxim for
1225 0.67 Tue, February 3, 2009
1227 - Lots of little typo fixes and a few clarifications. Several
1228 pages didn't have proper titles, and so weren't actually
1229 visible on search.cpan.org. Thanks to hanekomu for a variety
1230 of fixes and formatting improvements.
1232 0.66 Tue, February 3, 2009
1234 - This is a brand new, extensive manual for Moose. This aims to
1235 provide a complete introduction to all of Moose's
1236 features. This work was funded as part of the Moose docs grant
1237 from TPF. (Dave Rolsky)
1239 * Moose::Meta::Attribute
1240 - Added a delegation_metaclass method to replace a hard-coded
1241 use of Moose::Meta::Method::Delegation. (Dave Rolsky)
1243 * Moose::Util::TypeConstraints
1244 - If you created a subtype and passed a parent that Moose didn't
1245 know about, it simply ignored the parent. Now it automatically
1246 creates the parent as a class type. This may not be what you
1247 want, but is less broken than before. (Dave Rolsky)
1249 * Moose::Util::TypeConstraints
1250 - This module tried throw errors by calling Moose->throw_error,
1251 but it did not ensure that Moose was loaded first. This could
1252 cause very unhelpful errors when it tried to throw an error
1253 before Moose was loaded. (Dave Rolsky)
1255 * Moose::Util::TypeConstraints
1256 - You could declare a name with subtype such as "Foo!Bar" that
1257 would be allowed, but if you used it in a parameterized type
1258 such as "ArrayRef[Foo!Bar]" it wouldn't work. We now do some
1259 vetting on names created via the sugar functions, so that they
1260 can only contain alphanumerics, ":", and ".". (Dave Rolsky)
1262 0.65 Thu, January 22, 2009
1263 * Moose and Moose::Meta::Method::Overridden
1264 - If an overridden method called super(), and then the
1265 superclass's method (not overridden) _also_ called super(),
1266 Moose went into an endless recursion loop. Test provided by
1267 Chris Prather. (Dave Rolsky)
1269 * Moose::Meta::TypeConstraint
1270 - All methods are now documented. (gphat)
1272 * t/100_bugs/011_DEMOLISH_eats_exceptions.t
1273 - Fixed some bogus failures that occurred because we tried to
1274 validate filesystem paths in a very ad-hoc and
1275 not-quite-correct way. (Dave Rolsky)
1277 * Moose::Util::TypeConstraints
1278 - Added maybe_type to exports. See docs for details. (rjbs)
1281 - Added Moose::Util::TypeConstraints to the SEE ALSO
1285 - Methods created via an attribute can now fulfill a "requires"
1286 declaration for a role. (nothingmuch)
1288 * Moose::Meta::Method::*
1289 - Stack traces from inlined code will now report its line and
1290 file as being in your class, as opposed to in Moose
1291 guts. (nothingmuch).
1293 0.64 Wed, December 31, 2008
1294 * Moose::Meta::Method::Accessor
1295 - Always inline predicate and clearer methods (Sartak)
1297 * Moose::Meta::Attribute
1298 - Support for parameterized traits (Sartak)
1299 - verify_against_type_constraint method to avoid duplication
1300 and enhance extensibility (Sartak)
1302 * Moose::Meta::Class
1303 - Tests (but no support yet) for parameterized traits (Sartak)
1306 - Require Class::MOP 0.75+, which has the side effect of making
1307 sure we work on Win32. (Dave Rolsky)
1309 0.63 Mon, December 8, 2008
1310 * Moose::Unsweetened
1311 - Some small grammar tweaks and bug fixes in non-Moose example
1314 0.62_02 Fri, December 5, 2008
1315 * Moose::Meta::Role::Application::ToClass
1316 - When a class does not provide all of a role's required
1317 methods, the error thrown now mentions all of the missing
1318 methods, as opposed to just the first one found. Requested by
1319 Curtis Poe (RT #41119). (Dave Rolsky)
1321 * Moose::Meta::Method::Constructor
1322 - Moose will no longer inline a constructor for your class
1323 unless it inherits its constructor from Moose::Object, and
1324 will warn when it doesn't inline. If you want to force
1325 inlining anyway, pass "replace_constructor => 1" to
1326 make_immutable. Addresses RT #40968, reported by Jon
1327 Swartz. (Dave Rolsky)
1328 - The quoting of default values could be broken if the default
1329 contained a single quote ('). Now we use quotemeta to escape
1330 anything potentially dangerous in the defaults. (Dave Rolsky)
1332 0.62_01 Wed, December 3, 2008
1334 - use the method->execute API for BUILDALL
1335 and DEMOLISHALL (Sartak)
1337 * Moose::Util::TypeConstraints
1338 - We now make all the type constraint meta classes immutable
1339 before creating the default types provided by Moose. This
1340 should make loading Moose a little faster. (Dave Rolsky)
1342 0.62 Wed November 26, 2008
1343 * Moose::Meta::Role::Application::ToClass
1344 Moose::Meta::Role::Application::ToRole
1345 - fixed issues where excluding and aliasing the
1346 same methods for a single role did not work
1347 right (worked just fine with multiple
1349 - added test for this (stevan)
1351 * Moose::Meta::Role::Application::RoleSummation
1352 - fixed the error message when trying to compose
1353 a role with a role it excludes (Sartak)
1356 - Catch another case where recursion caused the value
1357 of $CALLER to be stamped on (t0m)
1358 - added test for this (t0m)
1361 - Remove the make_immutable keyword, which has been
1362 deprecated since April. It breaks metaclasses that
1363 use Moose without no Moose (Sartak)
1365 * Moose::Meta::Attribute
1366 - Removing an attribute from a class now also removes delegation
1367 (handles) methods installed for that attribute (t0m)
1368 - added test for this (t0m)
1370 * Moose::Meta::Method::Constructor
1371 - An attribute with a default that looked like a number (but was
1372 really a string) would accidentally be treated as a number
1373 when the constructor was made immutable (perigrin)
1374 - added test for this (perigrin)
1377 - create method for constructing a role
1378 dynamically (Sartak)
1379 - added test for this (Sartak)
1380 - anonymous roles! (Sartak)
1381 - added test for this (Sartak)
1384 - more consistent error messages (Sartak)
1386 * Moose::Cookbook::Roles::Recipe1
1387 - attempt to explain why a role that just requires
1388 methods is useful (Sartak)
1390 0.61 Fri November 7, 2008
1391 * Moose::Meta::Attribute
1392 - When passing a role to handles, it will be loaded if necessary
1395 * Moose::Meta::Class
1396 - Method objects returned by get_method (and other methods)
1397 Could end up being returned without an associated_metaclass
1398 attribute. Removing get_method_map, which is provided by
1399 Class::MOP::Class, fixed this. The Moose version did nothing
1400 different from its parent except introduce a bug. (Dave Rolsky)
1401 - added tests for this (jdv79)
1404 - Added a $VERSION to all .pm files which didn't have one. Fixes
1405 RT #40049, reported by Adam Kennedy. (Dave Rolsky)
1407 * Moose::Cookbook::Basics::Recipe4
1408 * Moose::Cookbook::Basics::Recipe6
1409 - These files had spaces on the first line of the SYNOPSIS, as
1410 opposed to a totally empty line. According to RT #40432, this
1411 confuses POD parsers. (Dave Rolsky)
1413 0.60 Fri October 24, 2008
1415 - Passing "-traits" when loading Moose caused the Moose.pm
1416 exports to be broken. Reported by t0m. (Dave Rolsky)
1417 - Tests for this bug. (t0m)
1420 - Change resolve_metaclass alias to use the new
1421 load_first_existing_class function. This makes it a lot
1422 simpler, and also around 5 times faster. (t0m)
1423 - Add caching to resolve_metaclass_alias, which gives an order
1424 of magnitude speedup to things which repeatedly call the
1425 Moose::Meta::Attribute->does method, notably MooseX::Storage
1428 * Moose::Util::TypeConstraint
1429 - Put back the changes for parameterized constraints that
1430 shouldn't have been removed in 0.59. We still cannot parse
1431 them, but MooseX modules can create them in some other
1432 way. See the 0.58 changes for more details. (jnapiorkowski)
1433 - Changed the way subtypes are created so that the job is
1434 delegated to a type constraint parent. This clears up some
1435 hardcoded checking and should allow correct subtypes of
1436 Moose::Meta::Type::Constraint. Don't rely on this new API too
1437 much (create_child_type) because it may go away in the
1438 future. (jnapiorkowski)
1440 * Moose::Meta::TypeConstraint::Union
1441 - Type constraint names are sorted as strings, not numbers.
1444 * Moose::Meta::TypeConstraint::Parameterizable
1445 - New parameterize method. This can be used as a factory method
1446 to make a new type constraint with a given parameterized
1447 type. (jnapiorkowski)
1448 - added tests (jnapiorkowski)
1450 0.59 Tue October 14, 2008
1452 - Add abridged documentation for builder/default/initializer/
1453 predicate, and link to more details sections in
1454 Class::MOP::Attribute. (t0m)
1456 * Moose::Util::TypeConstraints
1457 - removed prototypes from all but the &-based stuff (mst)
1459 * Moose::Util::TypeConstraints
1460 - Creating a anonymous subtype with both a constraint and a
1461 message failed with a very unhelpful error, but should just
1462 work. Reported by t0m. (Dave Rolsky)
1465 - Some tests that used Test::Warn if it was available failed
1466 with older versions of Test::Warn. Reported by Fayland. (Dave
1468 - Test firing behavior of triggers in relation to builder/default/
1470 - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
1471 kinds of supported type. (t0m)
1473 * Moose::Meta::Class
1474 - In create(), do not pass "roles" option to the superclass
1475 - added related test that creates an anon metaclass with
1476 a required attribute
1478 * Moose::Meta::TypeConstraint::Class
1479 * Moose::Meta::TypeConstraint::Role
1480 - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
1481 other types (as per change in 0.55_02). (t0m)
1483 * Moose::Meta::TypeConstraint::Registry
1484 - Fix warning when dealing with unknown type names (t0m)
1486 * Moose::Util::TypeConstraints
1487 - Reverted changes from 0.58 related to handle parameterized
1488 types. This caused random failures on BSD and Win32 systems,
1489 apparently related to the regex engine. This means that Moose
1490 can no longer parse structured type constraints like
1491 ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
1492 supported in a slightly different way via MooseX::Types some
1493 time in the future. (Dave Rolsky)
1495 0.58 Sat September 20, 2008
1496 !! This release has an incompatible change regarding !!
1497 !! how roles add methods to a class !!
1499 * Roles and role application
1500 ! Roles now add methods by calling add_method, not
1501 alias_method. They make sure to always provide a method
1502 object, which will be cloned internally. This means that it is
1503 now possible to track the source of a method provided by a
1504 role, and even follow its history through intermediate roles.
1506 This means that methods added by a role now show up when
1507 looking at a class's method list/map. (Dave Rolsky)
1510 - From this release on, we'll try to maintain a list of
1511 conflicting modules, and warn you if you have one
1512 installed. For example, this release conflicts with ...
1513 - MooseX::Singleton <= 0.11
1514 - MooseX::Params::Validate <= 0.05
1517 In general, we try to not break backwards compatibility for
1518 most Moose users, but MooseX modules and other code which
1519 extends Moose's metaclasses is often affected by very small
1520 changes in the Moose internals.
1522 * Moose::Meta::Method::Delegation
1523 * Moose::Meta::Attribute
1524 - Delegation methods now have their own method class. (Dave
1527 * Moose::Meta::TypeConstraint::Parameterizable
1528 - Added a new method 'parameterize' which is basically a factory
1529 for the containing constraint. This makes it easier to create
1530 new types of parameterized constraints. (jnapiorkowski)
1532 * Moose::Meta::TypeConstraint::Union
1533 - Changed the way Union types canonicalize their names to follow
1534 the normalized TC naming rules, which means we strip all
1535 whitespace. (jnapiorkowski)
1537 * Moose::Util::TypeConstraints
1538 - Parameter and Union args are now sorted, this makes Int|Str
1539 the same constraint as Str|Int. (jnapiorkowski)
1540 - Changes to the way Union types are parsed to more correctly
1541 stringify their names. (jnapiorkowski)
1542 - When creating a parameterized type, we now use the new
1543 parameterize method. (jnapiorkowski)
1544 - Incoming type constraint strings are now normalized to remove
1545 all whitespace differences. (jnapiorkowski)
1546 - Changed the way we parse type constraint strings so that we now
1547 match TC[Int,Int,...] and TC[name=>Str] as parameterized type
1548 constraints. This lays the foundation for more flexible type
1549 constraint implementations.
1551 * Tests and docs for all the above. (jnapiorkowski)
1555 - Moose::Exporter will no longer remove a subroutine that the
1556 exporting package re-exports. Moose re-exports the
1557 Carp::confess function, among others. The reasoning is that we
1558 cannot know whether you have also explicitly imported those
1559 functions for your own use, so we err on the safe side and
1560 always keep them. (Dave Rolsky)
1561 - added tests for this (rafl)
1563 * Moose::Meta::Class
1564 - Changes to how we fix metaclass compatibility that are much
1565 too complicated to go into. The summary is that Moose is much
1566 less likely to complain about metaclass incompatibility
1567 now. In particular, if two metaclasses differ because
1568 Moose::Util::MetaRole was used on the two corresponding
1569 classes, then the difference in roles is reconciled for the
1570 subclass's metaclass. (Dave Rolsky)
1571 - Squashed an warning in _process_attribute (thepler)
1574 - throw exceptions (sooner) for invalid attribute names (thepler)
1575 - added tests for this (thepler)
1577 * Moose::Util::MetaRole
1578 - If you explicitly set a constructor or destructor class for a
1579 metaclass object, and then applied roles to the metaclass,
1580 that explicitly set class would be lost and replaced with the
1583 * Moose::Meta::Class
1584 * Moose::Meta::Attribute
1585 * Moose::Meta::Method
1588 * Moose::Error::Default
1589 * Moose::Error::Croak
1590 * Moose::Error::Confess
1591 - All instances of confess() changed to use overridable
1592 C<throw_error> method. This method ultimately calls a class
1593 constructor, and you can change the class being called. In
1594 addition, errors now pass more information than just a string.
1595 The default C<error_class> behaves like C<Carp::confess>, so
1596 the behavior is not visibly different for end users.
1598 0.57 Wed September 3, 2008
1600 - A new bit of doc intended to introduce folks familiar with
1601 "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
1603 * Moose::Unsweetened
1604 - Shows examples of two classes, each done first with and then
1605 without Moose. This makes a nice parallel to
1606 Moose::Intro. (Dave Rolsky)
1608 * Moose::Util::TypeConstraints
1609 - Fixed a bug in find_or_parse_type_constraint so that it
1610 accepts a Moose::Meta::TypeConstraint object as the parent
1611 type, not just a name (jnapiorkowski)
1612 - added tests (jnapiorkowski)
1615 - If Sub::Name was not present, unimporting failed to actually
1616 remove some sugar subs, causing test failures (Dave Rolsky)
1618 0.56 Mon September 1, 2008
1619 For those not following the series of dev releases, there are
1620 several major changes in this release of Moose.
1621 ! Moose::init_meta should now be called as a method. See the
1624 - Major performance improvements by nothingmuch.
1626 - New modules for extension writers, Moose::Exporter and
1627 Moose::Util::MetaRole by Dave Rolsky.
1629 - Lots of doc improvements and additions, especially in the
1632 - Various bug fixes.
1634 * Removed all references to the experimental-but-no-longer-needed
1635 Moose::Meta::Role::Application::ToMetaclassInstance.
1637 * Require Class::MOP 0.65.
1639 0.55_04 Sat August 30, 2008
1640 * Moose::Util::MetaRole
1641 * Moose::Cookbook::Extending::Recipe2
1642 - This simplifies the application of roles to any meta class, as
1643 well as the base object class. Reimplemented metaclass traits
1644 using this module. (Dave Rolsky)
1646 * Moose::Cookbook::Extending::Recipe1
1647 - This a new recipe, an overview of various ways to write Moose
1648 extensions (Dave Rolsky)
1650 * Moose::Cookbook::Extending::Recipe3
1651 * Moose::Cookbook::Extending::Recipe4
1652 - These used to be Extending::Recipe1 and Extending::Recipe2,
1655 0.55_03 Fri August 29, 2008
1656 * No changes from 0.55_02 except increasing the Class::MOP
1657 dependency to 0.64_07.
1659 0.55_02 Fri August 29, 2008
1660 * Makefile.PL and Moose.pm
1661 - explicitly require Perl 5.8.0+ (Dave Rolsky)
1663 * Moose::Util::TypeConstraints
1664 - Fix warnings from find_type_constraint if the type is not
1667 * Moose::Meta::TypeConstraint
1668 - Predicate methods (equals/is_a_type_of/is_subtype_of) now
1669 return false if the type you specify cannot be found in the
1670 type registry, rather than throwing an unhelpful and
1671 coincidental exception. (t0m).
1672 - added docs & test for this (t0m)
1674 * Moose::Meta::TypeConstraint::Registry
1675 - add_type_constraint now throws an exception if a parameter is
1677 - added docs & test for this (t0m)
1679 * Moose::Cookbook::FAQ
1680 - Added a faq entry on the difference between "role" and "trait"
1684 - Fixed a bug that caused role composition to not see a required
1685 method when that method was provided by another role being
1686 composed at the same time. (Dave Rolsky)
1687 - test and bug finding (tokuhirom)
1689 0.55_01 Wed August 20, 2008
1691 !! Calling Moose::init_meta as a function is now !!
1692 !! deprecated. Please see the Moose.pm docs for details. !!
1694 * Moose::Meta::Method::Constructor
1695 - Fix inlined constructor so that values produced by default
1696 or builder methods are coerced as required. (t0m)
1697 - added test for this (t0m)
1699 * Moose::Meta::Attribute
1700 - A lazy attribute with a default or builder did not attempt to
1701 coerce the default value. The immutable code _did_
1703 - added test for this (t0m)
1706 - This is a new helper module for writing "Moose-alike"
1707 modules. This should make the lives of MooseX module authors
1708 much easier. (Dave Rolsky)
1711 * Moose::Cookbook::Meta::Recipe5
1712 - Implemented metaclass traits (and wrote a recipe for it):
1714 use Moose -traits => 'Foo'
1716 This should make writing small Moose extensions a little
1717 easier (Dave Rolsky)
1719 * Moose::Cookbook::Basics::Recipe1
1720 - Removed any examples of direct hashref access, and applied an
1721 editorial axe to reduce verbosity. (Dave Rolsky)
1723 * Moose::Cookbook::Basics::Recipe1
1724 - Also applied an editorial axe here. (Dave Rolsky)
1727 * Moose::Cookbook::Extending::Recipe1
1728 * Moose::Cookbook::Extending::Recipe2
1729 - Rewrote extending and embedding moose documentation and
1730 recipes to use Moose::Exporter (Dave Rolsky)
1734 - These two modules now warn when you load them from the main
1735 package "main" package, because we will not export sugar to
1736 main. Previously it just did nothing. (Dave Rolsky)
1739 - Now provide an init_meta method just like Moose.pm, and you
1740 can call this to provide an alternate role metaclass. (Dave
1741 Rolsky and nothingmuch)
1742 - get_method_map now respects the package cache flag (nothingmuch)
1745 - Two new methods - add_method and wrap_method_body
1749 - Optimizations including allowing constructors to accept hash
1750 refs, making many more classes immutable, and making
1751 constructors immutable. (nothingmuch)
1753 0.55 Sun August 3, 2008
1754 * Moose::Meta::Attribute
1755 - breaking down the way 'handles' methods are
1756 created so that the process can be more easily
1757 overridden by subclasses (stevan)
1759 * Moose::Meta::TypeConstraint
1760 - fixing what is passed into a ->message with
1761 the type constraints (RT #37569)
1762 - added tests for this (Charles Alderman)
1764 * Moose::Util::TypeConstraints
1765 - fix coerce to accept anon types like subtype can (mst)
1768 - reorganized the recipes into sections - Basics, Roles, Meta,
1769 Extending - and wrote abstracts for each section (Dave Rolsky)
1771 * Moose::Cookbook::Basics::Recipe10
1772 - A new recipe that demonstrates operator overloading
1773 in combination with Moose. (bluefeet)
1775 * Moose::Cookbook::Meta::Recipe1
1776 - an introduction to what meta is and why you'd want to make
1777 your own metaclass extensions (Dave Rolsky)
1779 * Moose::Cookbook::Meta::Recipe4
1780 - a very simple metaclass example (Dave Rolsky)
1782 * Moose::Cookbook::Extending::Recipe1
1783 - how to write a Moose-alike module to use your own object base
1786 * Moose::Cookbook::Extending::Recipe2
1787 - how to write modules with an API just like C<Moose.pm> (Dave
1791 - Tons of fixes, both syntactical and grammatical (Dave
1792 Rolsky, Paul Fenwick)
1794 0.54 Thurs. July 3, 2008
1795 ... this is not my day today ...
1797 * Moose::Meta::Attribute
1798 - fixed legal_options_for_inheritance such that
1799 clone_and_inherit options still works for
1800 Class::MOP::Attribute objects and therefore
1801 does not break MooseX::AttributeHelpers
1804 0.53 Thurs. July 3, 2008
1805 * Whoops, I guess I should run 'make manifest' before
1806 actually releasing the module. No actual changes
1807 in this release, except the fact that it includes
1808 the changes that I didn't include in the last
1811 0.52 Thurs. July 3, 2008
1813 - added "FEATURE REQUESTS" section to the Moose docs
1814 to properly direct people (stevan) (RT #34333)
1815 - making 'extends' croak if it is passed a Role since
1816 this is not ever something you want to do
1817 (fixed by stevan, found by obra)
1818 - added tests for this (stevan)
1821 - adding support for DOES (as in UNIVERSAL::DOES)
1823 - added test for this
1825 * Moose::Meta::Attribute
1826 - added legal_options_for_inheritance (wreis)
1827 - added tests for this (wreis)
1829 * Moose::Cookbook::Snacks::*
1830 - removed some of the unfinished snacks that should
1831 not have been released yet. Added some more examples
1832 to the 'Keywords' snack. (stevan)
1834 * Moose::Cookbook::Style
1835 - added general Moose "style guide" of sorts to the
1836 cookbook (nothingmuch) (RT #34335)
1839 - added more BUILDARGS tests (stevan)
1841 0.51 Thurs. Jun 26, 2008
1843 - add unimport so "no Moose::Role" actually does
1846 * Moose::Meta::Role::Application::ToRole
1847 - when RoleA did RoleB, and RoleA aliased a method from RoleB in
1848 order to provide its own implementation, that method still got
1849 added to the list of required methods for consumers of
1850 RoleB. Now an aliased method is only added to the list of
1851 required methods if the role doing the aliasing does not
1852 provide its own implementation. See Recipe 11 for an example
1853 of all this. (Dave Rolsky)
1854 - added tests for this
1856 * Moose::Meta::Method::Constructor
1857 - when a single argument that wasn't a hashref was provided to
1858 an immutabilized constructor, the error message was very
1859 unhelpful, as opposed to the non-immutable error. Reported by
1861 - added test for this (Dave Rolsky)
1863 * Moose::Meta::Attribute
1864 - added support for meta_attr->does("ShortAlias") (sartak)
1865 - added tests for this (sartak)
1866 - moved the bulk of the `handles` handling to the new
1867 install_delegation method (Stevan)
1870 - Added BUILDARGS, a new step in new()
1872 * Moose::Meta::Role::Application::RoleSummation
1873 - fix typos no one ever sees (sartak)
1875 * Moose::Util::TypeConstraints
1876 * Moose::Meta::TypeConstraint
1877 * Moose::Meta::TypeCoercion
1878 - Attempt to work around the ??{ } vs. threads issue
1880 - Some null_constraint optimizations
1882 0.50 Thurs. Jun 11, 2008
1883 - Fixed a version number issue by bumping all modules
1886 0.49 Thurs. Jun 11, 2008
1887 !! This version now approx. 20-25% !!
1888 !! faster with new Class::MOP 0.59 !!
1890 * Moose::Meta::Attribute
1891 - fixed how the is => (ro|rw) works with
1892 custom defined reader, writer and accessor
1894 - added docs for this (TODO).
1895 - added tests for this (Thanks to Penfold)
1896 - added the custom attribute alias for regular
1897 Moose attributes which is "Moose"
1898 - fix builder and default both being used
1903 Moose::Meta::Attribute
1905 Moose::Meta::Role::Composite
1906 Moose::Util::TypeConstraints
1907 - switched usage of reftype to ref because
1911 - changing add_package_symbol to use the new
1915 - fixed how DEMOLISHALL is called so that it
1916 can be overrided in subclasses (thanks to Sartak)
1917 - added test for this (thanks to Sartak)
1919 * Moose::Util::TypeConstraints
1920 - move the ClassName type check code to
1921 Class::MOP::is_class_loaded (thanks to Sartak)
1923 * Moose::Cookbook::Recipe11
1924 - add tests for this (thanks to tokuhirom)
1926 0.48 Thurs. May 29, 2008
1927 (early morning release engineering)--
1929 - fixing the version in Moose::Meta::Method::Destructor
1930 which was causing the indexer to choke
1932 0.47 Thurs. May 29, 2008
1933 (late night release engineering)--
1935 - fixing the version is META.yml, no functional
1936 changes in this release
1938 0.46 Wed. May 28, 2008
1939 !! This version now approx. 20-25% !!
1940 !! faster with new Class::MOP 0.57 !!
1942 * Moose::Meta::Class
1943 - some optimizations of the &initialize method
1944 since it is called so often by &meta
1946 * Moose::Meta::Class
1948 - now use the get_all_package_symbols from the
1949 updated Class::MOP, test suite is now 10 seconds
1952 * Moose::Meta::Method::Destructor
1953 - is_needed can now also be called as a class
1954 method for immutablization to check if the
1955 destructor object even needs to be created
1958 * Moose::Meta::Method::Destructor
1959 Moose::Meta::Method::Constructor
1960 - added more descriptive error message to help
1961 keep people from wasting time tracking an error
1962 that is easily fixed by upgrading.
1964 0.45 Saturday, May 24, 2008
1966 - Because of work in Class::MOP 0.57, all
1967 XS based functionality is now optional
1968 and a Pure Perl version is supplied
1969 - the CLASS_MOP_NO_XS environment variable
1970 can now be used to force non-XS versions
1972 - several of the packages have been tweaked
1973 to take care of this, mostly we added
1974 support for the package_name and name
1975 variables in all the Method metaclasses
1976 - before/around/after method modifiers now
1977 support regexp matching of names
1978 (thanks to Takatoshi Kitano)
1979 - tests added for this
1980 - NOTE: this only works for classes, it
1981 is currently not supported in roles,
1982 but, ... patches welcome
1983 - All usage of Carp::confess have been replaced
1984 by Carp::croak in the "keyword" functions since
1985 the stack trace is usually not helpful
1988 - All usage of Carp::confess have been replaced
1989 by Carp::croak in the "keyword" functions since
1990 the stack trace is usually not helpful
1991 - The 'has' keyword for roles now accepts the
1992 same array ref form that Moose.pm does
1993 (has [qw/foo bar/] => (is => 'rw', ...))
1994 - added test for this
1996 * Moose::Meta::Attribute
1997 - trigger on a ro-attribute is no longer an
1998 error, as it's useful to trigger off of the
2001 * Moose::Meta::Class
2002 - added same 'add_package_symbol' fix as in
2006 - does_role now handles non-Moose classes
2008 - added tests for this
2009 - added the 'add_method_modifier' function
2010 (thanks to Takatoshi Kitano)
2012 * Moose::Util::TypeConstraints
2013 - subtypes of parameterizable types now are
2014 themselves parameterizable types
2016 * Moose::Meta::Method::Constructor
2017 - fixed bug where trigger was not being
2018 called by the inlined immutable
2020 - added test for this (thanks to Caelum)
2022 * Moose::Meta::Role::Application::ToInstance
2023 - now uses the metaclass of the instance
2024 (if possible) to create the anon-class
2025 (thanks Jonathan Rockway)
2027 * Moose::Cookbook::Recipe22
2028 - added the meta-attribute trait recipe
2032 - fixed hash-ordering test bug that was
2033 causing occasional cpantester failures
2034 - renamed the t/000_recipe/*.t tests to be
2035 more descriptive (thanks to Sartak)
2037 0.44 Sat. May 10, 2008
2039 - made make_immutable warning cluck to
2040 show where the error is (thanks mst)
2043 - BUILDALL and DEMOLISHALL now call
2044 ->body when looping through the
2045 methods, to avoid the overloaded
2047 - fixed issue where DEMOLISHALL was
2048 eating the $@ values, and so not
2049 working correctly, it still kind of
2050 eats them, but so does vanilla perl
2051 - added tests for this
2053 * Moose::Cookbook::Recipe7
2054 - added new recipe for immutable
2055 functionality (thanks Dave Rolsky)
2057 * Moose::Cookbook::Recipe9
2058 - added new recipe for builder and
2059 lazy_build (thanks Dave Rolsky)
2061 * Moose::Cookbook::Recipe11
2062 - added new recipe for method aliasing
2063 and exclusion with Roles (thanks Dave Rolsky)
2066 - fixed Win32 test failure (thanks spicyjack)
2068 ~ removed Build.PL and Module::Build compat
2069 since Module::Install has done that.
2071 0.43 Wed. April, 30, 2008
2073 drink more coffee before
2074 doing release engineering
2076 - whoops, forgot to do the smolder tests,
2077 and we broke some of the custom meta-attr
2078 modules. This fixes that.
2080 0.42 Mon. April 28, 2008
2081 - some bad tests slipped by, nothing else
2082 changed in this release (cpantesters++)
2084 - upped the Class::MOP dependency to 0.55
2085 since we have tests which need the C3
2088 0.41 Mon. April 28, 2008
2089 ~~ numerous documentation updates ~~
2091 - Changed all usage of die to Carp::croak for better
2092 error reporting (initial patch by Tod Hagan)
2094 ** IMPORTANT NOTE **
2095 - the make_immutable keyword is now deprecated, don't
2096 use it in any new code and please fix your old code
2097 as well. There will be 2 releases, and then it will
2103 - refactored the way inner and super work to avoid
2104 any method/@ISA cache penalty (nothingmuch)
2106 * Moose::Meta::Class
2107 - fixing &new_object to make sure trigger gets the
2108 coerced value (spotted by Charles Alderman on the
2110 - added test for this
2112 * Moose::Meta::Method::Constructor
2113 - immutable classes which had non-lazy attributes were calling
2114 the default generating sub twice in the constructor. (bug
2115 found by Jesse Luehrs, fixed by Dave Rolsky)
2116 - added tests for this (Dave Rolsky)
2117 - fix typo in initialize_body method (nothingmuch)
2119 * Moose::Meta::Method::Destructor
2120 - fix typo in initialize_body method (nothingmuch)
2122 * Moose::Meta::Method::Overriden
2123 Moose::Meta::Method::Augmented
2124 - moved the logic for these into their own
2125 classes (nothingmuch)
2127 * Moose::Meta::Attribute
2128 - inherited attributes may now be extended without
2129 restriction on the type ('isa', 'does') (Sartak)
2130 - added tests for this (Sartak)
2131 - when an attribute property is malformed (such as lazy without
2132 a default), give the name of the attribute in the error
2134 - added the &applied_traits and &has_applied_traits methods
2135 to allow introspection of traits
2136 - added tests for this
2137 - moved 'trait' and 'metaclass' argument handling to here from
2139 - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
2140 '+foo' syntax) (nothingmuch)
2141 - added tests for this (t0m)
2144 - localize $@ inside DEMOLISHALL to avoid it
2145 eating $@ (found by Ernesto)
2146 - added test for this (thanks to Ernesto)
2148 * Moose::Util::TypeConstraints
2149 - &find_type_constraint now DWIMs when given an
2150 type constraint object or name (nothingmuch)
2151 - &find_or_create_type_constraint superseded with a number of more
2153 - find_or_create_{isa,does}_type_constraint
2154 - find_or_parse_type_constraint
2156 * Moose::Meta::TypeConstraint
2157 Moose::Meta::TypeConstraint::Class
2158 Moose::Meta::TypeConstraint::Role
2159 Moose::Meta::TypeConstraint::Enum
2160 Moose::Meta::TypeConstraint::Union
2161 Moose::Meta::TypeConstraint::Parameterized
2162 - added the &equals method for comparing two type
2163 constraints (nothingmuch)
2164 - added tests for this (nothingmuch)
2166 * Moose::Meta::TypeConstraint
2167 - add the &parents method, which is just an alias to &parent.
2168 Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
2170 * Moose::Meta::TypeConstraint::Class
2171 - added the class attribute for introspection purposes
2173 - added tests for this
2175 * Moose::Meta::TypeConstraint::Enum
2176 Moose::Meta::TypeConstraint::Role
2177 - broke these out into their own classes (nothingmuch)
2179 * Moose::Cookbook::Recipe*
2180 - fixed references to test file locations in the POD
2181 and updated up some text for new Moose features
2185 - Added &resolve_metaclass_alias, a helper function for finding an actual
2186 class for a short name (e.g. in the traits list)
2188 0.40 Fri. March 14, 2008
2189 - I hate Pod::Coverage
2191 0.39 Fri. March 14, 2008
2193 - documenting the use of '+name' with attributes
2194 that come from recently composed roles. It makes
2195 sense, people are using it, and so why not just
2196 officially support it.
2197 - fixing the 'extends' keyword so that it will not
2198 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
2201 - added the perl -Moose=+Class::Name feature to allow
2202 monkeypatching of classes in one liners
2205 - fixing the 'apply_all_roles' keyword so that it will not
2206 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
2208 * Moose::Meta::Class
2209 - added ->create method which now supports roles (thanks to jrockway)
2210 - added tests for this
2211 - added ->create_anon_class which now supports roles and caching of
2212 the results (thanks to jrockway)
2213 - added tests for this
2214 - made ->does_role a little more forgiving when it is
2215 checking a Class::MOP era metaclasses.
2217 * Moose::Meta::Role::Application::ToInstance
2218 - it is now possible to pass extra params to be used when
2219 a role is applied to an the instance (rebless_params)
2220 - added tests for this
2222 * Moose::Util::TypeConstraints
2223 - class_type now accepts an optional second argument for a
2224 custom message. POD anotated accordingly (groditi)
2225 - added tests for this
2226 - it is now possible to make anon-enums by passing 'enum' an
2227 ARRAY ref instead of the $name => @values. Everything else
2229 - added tests for this
2232 - making test for using '+name' on attributes consumed
2233 from a role, it works and makes sense too.
2235 * Moose::Meta::Attribute
2236 - fix handles so that it doesn't return nothing
2237 when the method cannot be found, not sure why
2238 it ever did this originally, this means we now
2239 have slightly better support for AUTOLOADed
2241 - added more delegation tests
2242 - adding ->does method to this so as to better
2243 support traits and their introspection.
2244 - added tests for this
2247 - localizing the Data::Dumper configurations so
2248 that it does not pollute others (RT #33509)
2249 - made ->does a little more forgiving when it is
2250 passed Class::MOP era metaclasses.
2252 0.38 Fri. Feb. 15, 2008
2253 * Moose::Meta::Attribute
2254 - fixed initializer to correctly do
2255 type checking and coercion in the
2257 - added tests for this
2260 - fixed some finicky tests (thanks to konobi)
2262 0.37 Thurs. Feb. 14, 2008
2264 - fixed some details in Moose::init_meta
2265 and its superclass handling (thanks thepler)
2266 - added tests for this (thanks thepler)
2267 - 'has' now dies if you don't pass in name
2269 - added the 'make_immutable' keyword as a shortcut
2272 * Moose::Meta::Class
2273 Moose::Meta::Method::Constructor
2274 Moose::Meta::Attribute
2275 - making (init_arg => undef) work here too
2276 (thanks to nothingmuch)
2278 * Moose::Meta::Attribute
2279 Moose::Meta::Method::Constructor
2280 Moose::Meta::Method::Accessor
2281 - make lazy attributes respect attr initializers (rjbs)
2282 - added tests for this
2284 * Moose::Util::TypeConstraints
2285 Moose::Util::TypeConstraints::OptimizedConstraints
2286 Moose::Meta::TypeConstraints
2287 Moose::Meta::Attribute
2288 Moose::Meta::Method::Constructor
2289 Moose::Meta::Method::Accessor
2290 - making type errors use the
2291 assigned message (thanks to Sartak)
2292 - added tests for this
2294 * Moose::Meta::Method::Destructor
2295 - making sure DESTROY gets inlined properly
2296 with successive DEMOLISH calls (thanks to manito)
2298 * Moose::Meta::Attribute
2299 Moose::Meta::Method::Accessor
2300 - fixed handling of undef with type constraints
2302 - added tests for this
2305 - added &get_all_init_args and &get_all_attribute_values
2306 (thanks to Sartak and nothingmuch)
2308 0.36 Sat. Jan. 26, 2008
2310 Moose::Meta::Attribute
2311 - role type tests now support when roles are
2312 applied to non-Moose classes (found by ash)
2313 - added tests for this (thanks to ash)
2314 - couple extra tests to boost code coverage
2316 * Moose::Meta::Method::Constructor
2317 - improved fix for handling Class::MOP attributes
2318 - added test for this
2320 * Moose::Meta::Class
2321 - handled the add_attribute($attribute_meta_object)
2323 - added test for this
2325 0.35 Tues. Jan. 22, 2008
2326 * Moose::Meta::Method::Constructor
2327 - fix to make sure even Class::MOP attributes
2328 are handled correctly (Thanks to Dave Rolsky)
2329 - added test for this (also Dave Rolsky)
2331 * Moose::Meta::Class
2332 - improved error message on _apply_all_roles,
2333 you should now use Moose::Util::apply_all_roles
2334 and you shouldnt have been using a _ prefixed
2335 method in the first place ;)
2337 0.34 Mon. Jan. 21, 2008
2338 ~~~ more misc. doc. fixes ~~~
2339 ~~ updated copyright dates ~~
2341 Moose is now a postmodern object system :)
2342 - (see the POD for details)
2344 * <<Role System Refactoring>>
2345 - this release contains a major reworking and
2346 cleanup of the role system
2347 - 100% backwards compat.
2348 - Role application now restructured into seperate
2349 classes based on type of applicants
2350 - Role summation (combining of more than one role)
2351 is much cleaner and anon-classes are no longer
2352 used in this process
2353 - new Composite role metaclass
2354 - runtime application of roles to instances
2355 is now more efficient and re-uses generated
2356 classes when applicable
2358 * <<New Role composition features>>
2359 - methods can now be excluded from a given role
2361 - methods can now be aliased to another name (and
2362 still retain the original as well)
2364 * Moose::Util::TypeConstraints::OptimizedConstraints
2365 - added this module (see above)
2367 * Moose::Meta::Class
2368 - fixed the &_process_attribute method to be called
2369 by &add_attribute, so that the API is now correct
2371 * Moose::Meta::Method::Accessor
2372 - fixed bug when passing a list of values to
2373 an accessor would get (incorrectly) ignored.
2374 Thanks to Sartak for finding this ;)
2375 - added tests for this (Sartak again)
2377 * Moose::Meta::Method::Accessor
2378 Moose::Meta::Method::Constructor
2379 Moose::Meta::Attribute
2380 Moose::Meta::TypeConstraint
2381 Moose::Meta::TypeCoercion
2382 - lots of cleanup of such things as:
2384 - type constraint handling
2385 - error handling/messages
2386 (thanks to nothingmuch)
2388 * Moose::Meta::TypeConstraint::Parameterizable
2389 - added this module to support the refactor
2390 in Moose::Meta::TypeConstraint::Parameterized
2392 * Moose::Meta::TypeConstraint::Parameterized
2393 - refactored how these types are handled so they
2394 are more generic and not confined to ArrayRef
2398 - shortened some file names for better VMS support (RT #32381)
2400 0.33 Fri. Dec. 14, 2007
2401 !! Moose now loads 2 x faster !!
2402 !! with new Class::MOP 0.49 !!
2404 ++ new oose.pm module to make command line
2405 Moose-ness easier (see POD docs for more)
2407 * Moose::Meta::Class
2409 - several tweaks to take advantage of the
2410 new method map caching in Class::MOP
2412 * Moose::Meta::TypeConstraint::Parameterized
2413 - allow subtypes of ArrayRef and HashRef to
2414 be used as a container (sartak)
2415 - added tests for this
2416 - basic support for coercion to ArrayRef and
2417 HashRef for containers (sartak)
2418 - added tests for this
2420 * Moose::Meta::TypeCoercion
2421 - coercions will now create subtypes as needed
2422 so you can now add coercions to parameterized
2423 types without having to explictly define them
2424 - added tests for this
2426 * Moose::Meta::Method::Accessor
2427 - allow subclasses to decide whether we need
2428 to copy the value into a new variable (sartak)
2430 0.32 Tues. Dec. 4, 2007
2431 * Moose::Util::TypeConstraints
2432 - fixing how subtype aliases of unions work
2433 they should inherit the parent's coercion
2434 - added tests for this
2435 - you can now define multiple coercions on
2436 a single type at different times instead of
2437 having to do it all in one place
2438 - added tests for this
2440 * Moose::Meta::TypeConstraint
2441 - there is now a default constraint of sub { 1 }
2442 instead of Moose::Util::TypeConstraints setting
2445 * Moose::Meta::TypeCoercion
2446 * Moose::Meta::TypeCoercion::Union
2447 - added the &has_coercion_for_type and
2448 &add_type_coercions methods to support the
2449 new features above (although you cannot add
2450 more type coercions for Union types)
2452 0.31 Mon. Nov. 26, 2007
2453 * Moose::Meta::Attribute
2454 - made the +attr syntax handle extending types with
2455 parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
2456 now works if the original foo is an ArrayRef.
2457 - added tests for this.
2458 - delegation now works even if the attribute does not
2459 have a reader method using the get_read_method_ref
2460 method from Class::MOP::Attribute.
2461 - added tests for this
2462 - added docs for this
2464 * Moose::Util::TypeConstraints
2465 - passing no "additional attribute info" to
2466 &find_or_create_type_constraint will no longer
2467 attempt to create an __ANON__ type for you,
2468 instead it will just return undef.
2469 - added docs for this
2471 0.30 Fri. Nov. 23, 2007
2472 * Moose::Meta::Method::Constructor
2473 -builder related bug in inlined constructor. (groditi)
2475 * Moose::Meta::Method::Accessor
2476 - genereate unnecessary calls to predicates and refactor
2477 code generation for runtime speed (groditi)
2479 * Moose::Util::TypeConstraints
2480 - fix ClassName constraint to introspect symbol table (mst)
2481 - added more tests for this (mst)
2482 - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
2483 with work correctly.
2484 - added tests for this
2487 - adding the link to Recipie 11 (written by Sartak)
2488 - adding test for SYNOPSIS code
2491 - New tests for builder bug. Upon instantiation, if an
2492 attribute had a builder, no value and was not lazy the
2493 builder default was not getting run, oops. (groditi)
2495 0.29 Tues. Nov. 13, 2007
2496 * Moose::Meta::Attribute
2497 - Fix error message on missing builder method (groditi)
2499 * Moose::Meta::Method::Accessor
2500 - Fix error message on missing builder method (groditi)
2503 - Add test to check for the correct error message when
2504 builder method is missing (groditi)
2506 0.28 Tues. Nov. 13, 2007
2507 - 0.27 packaged incorrectly (groditi)
2509 0.27 Tues. Nov. 13, 2007
2510 * Moose::Meta::Attribute
2511 - Added support for the new builder option (groditi)
2512 - Added support for lazy_build option (groditi)
2513 - Changed slot initialization for predicate changes (groditi)
2515 * Moose::Meta::Method::Accessor
2516 - Added support for lazy_build option (groditi)
2517 - Fix inline methods to work with corrected predicate
2520 * Moose::Meta::Method::Constructor
2521 - Added support for lazy_build option (groditi)
2524 - tests for builder and lazy_build (groditi)
2526 * fixing some misc. bits in the docs that
2527 got mentioned on CPAN Forum & perlmonks
2530 - fixed how required methods are handled
2531 when they encounter overriden or modified
2532 methods from a class (thanks to confound).
2533 - added tests for this
2535 * Moose::Util::TypeConstraint
2536 - fixed the type notation parser so that
2537 the | always creates a union and so is
2538 no longer a valid type char (thanks to
2539 konobi, mugwump and #moose for working
2541 - added more tests for this
2543 0.26 Thurs. Sept. 27, 2007
2546 * Parameterized Types
2547 We now support parameterized collection types, such as:
2548 ArrayRef[Int] # array or integers
2549 HashRef[Object] # a hash with object values
2550 They can also be nested:
2551 ArrayRef[HashRef[RegexpRef]] # an array of hashes with regex values
2552 And work with the type unions as well:
2553 ArrayRef[Int | Str] # array of integers of strings
2555 * Better Framework Extendability
2556 Moose.pm is now "extendable" such that it is now much
2557 easier to extend the framework and add your own keywords
2558 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
2559 section of the Moose.pm docs.
2562 In an effort to begin documenting some of the various
2563 details of Moose as well as some common idioms, we have
2564 created Moose::Cookbook::Snacks as a place to find
2565 small (easily digestable) nuggets of Moose code.
2568 ~ Several doc updates/cleanup thanks to castaway ~
2570 - converted build system to use Module::Install instead of
2571 Module::Build (thanks to jrockway)
2574 - added all the meta classes to the immutable list and
2575 set it to inline the accessors
2576 - fix import to allow Sub::Exporter like { into => }
2577 and { into_level => } (perigrin)
2578 - exposed and documented init_meta() to allow better
2579 embedding and extending of Moose (perigrin)
2582 - complete re-organization of the test suite
2583 - added some new tests as well
2584 - finally re-enabled the Moose::POOP test since
2585 the new version of DBM::Deep now works again
2588 * Moose::Meta::Class
2589 - fixed very odd and very nasty recursion bug with
2591 - added tests for this (eilara)
2593 * Moose::Meta::Attribute
2594 Moose::Meta::Method::Constructor
2595 Moose::Meta::Method::Accessor
2596 - fixed issue with overload::Overloaded getting called
2597 on non-blessed items. (RT #29269)
2598 - added tests for this
2600 * Moose::Meta::Method::Accessor
2601 - fixed issue with generated accessor code making
2602 assumptions about hash based classes (thanks to dexter)
2604 * Moose::Coookbook::Snacks
2605 - these are bits of documentation, not quite as big as
2606 Recipes but which have no clear place in the module docs.
2607 So they are Snacks! (horray for castaway++)
2609 * Moose::Cookbook::Recipe4
2610 - updated it to use the new ArrayRef[MyType] construct
2611 - updated the accompanying test as well
2613 +++ Major Refactor of the Type Constraint system +++
2614 +++ with new features added as well +++
2616 * Moose::Util::TypeConstraint
2617 - no longer uses package variable to keep track of
2618 the type constraints, now uses the an instance of
2619 Moose::Meta::TypeConstraint::Registry to do it
2620 - added more sophisticated type notation parsing
2622 - added tests for this
2624 * Moose::Meta::TypeConstraint
2625 - some minor adjustments to make subclassing easier
2626 - added the package_defined_in attribute so that we
2627 can track where the type constraints are created
2629 * Moose::Meta::TypeConstraint::Union
2630 - this is now been refactored to be a subclass of
2631 Moose::Meta::TypeConstraint
2633 * Moose::Meta::TypeCoercion::Union
2634 - this has been added to service the newly refactored
2635 Moose::Meta::TypeConstraint::Union and is itself
2636 a subclass of Moose::Meta::TypeCoercion
2638 * Moose::Meta::TypeConstraint::Parameterized
2639 - added this module (taken from MooseX::AttributeHelpers)
2640 to help construct nested collection types
2641 - added tests for this
2643 * Moose::Meta::TypeConstraint::Registry
2644 - added this class to keep track of type constraints
2646 0.25 Mon. Aug. 13, 2007
2648 - Documentation update to reference Moose::Util::TypeConstraints
2649 under 'isa' in 'has' for how to define a new type
2650 (thanks to shlomif).
2652 * Moose::Meta::Attribute
2653 - required attributes now will no longer accept undef
2654 from the constructor, even if there is a default and lazy
2655 - added tests for this
2656 - default subroutines must return a value which passes the
2658 - added tests for this
2660 * Moose::Meta::Attribute
2661 * Moose::Meta::Method::Constructor
2662 * Moose::Meta::Method::Accessor
2663 - type-constraint tests now handle overloaded objects correctly
2664 in the error message
2665 - added tests for this (thanks to EvanCarroll)
2667 * Moose::Meta::TypeConstraint::Union
2668 - added (has_)hand_optimized_constraint to this class so that
2669 it behaves as the regular Moose::Meta::TypeConstraint does.
2672 - large refactoring of this code
2673 - added several more tests
2674 - tests for subtle conflict resolition issues
2675 added, but not currently running
2678 * Moose::Cookbook::Recipe7
2679 - added new recipe for augment/inner functionality
2681 - added test for this
2684 - a formal definition of roles (still in progress)
2687 - utilities for easier working with Moose classes
2688 - added tests for these
2691 - This contains Moose specific test functions
2692 - added tests for these
2694 0.24 Tues. July 3, 2007
2695 ~ Some doc updates/cleanup ~
2697 * Moose::Meta::Attribute
2698 - added support for roles to be given as parameters
2699 to the 'handles' option.
2700 - added tests and docs for this
2701 - the has '+foo' attribute form now accepts changes to
2702 the lazy option, and the addition of a handles option
2703 (but not changing the handles option)
2704 - added tests and docs for this
2707 - required methods are now fetched using find_method_by_name
2708 so that required methods can come from superclasses
2709 - adjusted tests for this
2711 0.23 Mon. June 18, 2007
2712 * Moose::Meta::Method::Constructor
2713 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
2714 * Moose::Meta::Class
2715 - Modify make_immutable to work with the new Class::MOP immutable
2716 mechanism + POD + very basic test (groditi)
2717 * Moose::Meta::Attribute
2718 - Fix handles to use goto() so that caller() comes out properly on
2719 the other side (perigrin)
2721 0.22 Thurs. May 31, 2007
2722 * Moose::Util::TypeConstraints
2723 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
2724 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
2725 prototypes for functions
2726 - added the ClassName type constraint, this checks for strings
2727 which will respond true to ->isa(UNIVERSAL).
2728 - added tests and docs for this
2729 - subtyping just in name now works correctly by making the
2730 default for where be { 1 }
2731 - added test for this
2733 * Moose::Meta::Method::Accessor
2734 - coerce and lazy now work together correctly, thanks to
2735 merlyn for finding this bug
2736 - tests added for this
2737 - fix reader presedence bug in Moose::Meta::Attribute + tests
2740 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
2741 a HASH-ref and missed. This produces better error messages then
2742 having it die cause undef is not a HASH.
2743 - added tests for this
2745 0.21 Thursday, May 2nd, 2007
2747 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
2748 - modified unimport to remove super and inner along with the rest
2749 - altered unimport tests to handle this
2752 - altered super export to populate SUPER_SLOT
2754 * Moose::Meta::Class
2755 - altered augment and override modifier application to use *_SLOT
2756 - modified tests for these to unimport one test class each to test
2759 - fixed issue where custom attribute metaclasses
2760 where not handled correctly in roles
2761 - added tests for this
2763 * Moose::Meta::Class
2764 - fixed issue where extending metaclasses with
2765 roles would blow up. Thanks to Aankhen`` for
2766 finding this insidious error, and it's solution.
2768 ~~ lots of spelling and grammer fixes in the docs,
2769 many many thanks to rlb3 and Aankhen for these :)
2771 0.20 Friday, April 6th, 2007
2772 >> I messed up the SKIP logic in one test
2773 so this release is just to fix that.
2776 - 'has' now also accepts an ARRAY ref
2777 to create multiple attrs (see docs)
2778 (thanks to konobi for this)
2779 - added tests and docs
2781 0.19 Thurs. April 5th, 2007
2782 ~~ More documentation updates ~~
2784 * Moose::Util::TypeConstraints
2785 - 'type' now supports messages as well
2786 thanks to phaylon for finding this
2787 - added tests for this
2788 - added &list_all_type_constraints and
2789 &list_all_builtin_type_constraints
2790 functions to facilitate introspection.
2792 * Moose::Meta::Attribute
2793 - fixed regexp 'handles' declarations
2794 to build the list of delegated methods
2795 correctly (and not override important
2796 things like &new) thanks to ashleyb
2798 - added tests and docs for this
2799 - added the 'documentation' attributes
2800 so that you can actually document your
2801 attributes and inspect them through the
2803 - added tests and docs for this
2805 * Moose::Meta::Class
2806 - when loading custom attribute metaclasses
2807 it will first look in for the class in the
2808 Moose::Meta::Attribute::Custom::$name, and
2809 then default to just loading $name.
2810 - added tests and docs for this
2812 * Moose::Meta::TypeConstraint
2813 - type constraints now stringify to their names.
2814 - added test for this
2817 - added tests to assure we work with Module::Refresh
2818 - added stricter test skip logic in the Moose POOP
2819 test, ask Rob Kinyon why.
2820 - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
2822 0.18 Sat. March 10, 2007
2823 ~~ Many, many documentation updates ~~
2826 - We now use Class::MOP::load_class to
2828 - added tests to show types and subtypes
2829 working with Declare::Constraints::Simple
2830 and Test::Deep as constraint engines.
2833 !! You must have Class::MOP 0.37_001 !!
2834 !! for this developer release to work !!
2836 This release was primarily adding the immutable
2837 feature to Moose. An immutable class is one which
2838 you promise not to alter. When you set the class
2839 as immutable it will perform various bits of
2840 memoization and inline certain part of the code
2841 (constructors, destructors and accessors). This
2842 minimizes (and in some cases totally eliminates)
2843 one of Moose's biggest performance hits. This
2844 feature is not on by default, and is 100% optional.
2845 It has several configurable bits as well, so you
2846 can pick and choose to your specific needs.
2848 The changes involved in this were fairly wide and
2849 highly specific, but 100% backwards compatible, so
2850 I am not going to enumerate them here. If you are
2851 truely interested in what was changed, please do
2854 0.17 Tues. Nov. 14, 2006
2855 * Moose::Meta::Method::Accessor
2856 - bugfix for read-only accessors which
2857 are have a type constraint and lazy.
2858 Thanks to chansen for finding it.
2860 0.16 Tues. Nov. 14, 2006
2862 There are some speed improvements in this release,
2863 but they are only the begining, so stay tuned.
2866 - BUILDALL and DEMOLISHALL no longer get
2867 called unless they actually need to be.
2868 This gave us a signifigant speed boost
2869 for the cases when there is no BUILD or
2870 DEMOLISH method present.
2872 * Moose::Util::TypeConstraints
2873 * Moose::Meta::TypeConstraint
2874 - added an 'optimize_as' option to the
2875 type constraint, which allows for a
2876 hand optimized version of the type
2877 constraint to be used when possible.
2878 - Any internally created type constraints
2879 now provide an optimized version as well.
2881 0.15 Sun. Nov. 5, 2006
2883 This version of Moose *must* have Class::MOP 0.36 in order
2884 to work correctly. A number of small internal tweaks have
2885 been made in order to be compatible with that release.
2887 * Moose::Util::TypeConstraints
2888 - added &unimport so that you can clean out
2889 your class namespace of these exported
2892 * Moose::Meta::Class
2893 - fixed minor issue which occasionally
2894 comes up during global destruction
2896 - moved Moose::Meta::Method::Overriden into
2900 - moved Moose::Meta::Role::Method into
2903 * Moose::Meta::Attribute
2904 - changed how we do type checks so that
2905 we reduce the overall cost, but still
2908 - moved accessor generation methods to
2909 Moose::Meta::Method::Accessor to
2910 conform to the API changes from
2913 * Moose::Meta::TypeConstraint
2914 - changed how constraints are compiled
2915 so that we do less recursion and more
2916 iteration. This makes the type check
2918 - moved Moose::Meta::TypeConstraint::Union
2921 * Moose::Meta::Method::Accessor
2922 - created this from methods formerly found in
2923 Moose::Meta::Attribute
2925 * Moose::Meta::Role::Method
2926 - moved this from Moose::Meta::Role
2928 * Moose::Meta::Method::Overriden
2929 - moved this from Moose::Meta::Class
2931 * Moose::Meta::TypeConstraint::Union
2932 - moved this from Moose::Meta::TypeConstraint
2934 0.14 Mon. Oct. 9, 2006
2936 * Moose::Meta::Attribute
2937 - fixed lazy attributes which were not getting
2938 checked with the type constraint (thanks ashley)
2939 - added tests for this
2940 - removed the over-enthusiastic DWIMery of the
2941 automatic ArrayRef and HashRef defaults, it
2942 broke predicates in an ugly way.
2943 - removed tests for this
2945 0.13 Sat. Sept. 30, 2006
2947 This version of Moose *must* have Class::MOP 0.35 in order
2948 to work correctly. A number of small internal tweaks have
2949 been made in order to be compatible with that release.
2952 - Removed the use of UNIVERSAL::require to be a better
2953 symbol table citizen and remove a dependency
2954 (thanks Adam Kennedy)
2956 **~~ removed experimental & undocumented feature ~~**
2957 - commented out the 'method' and 'self' keywords, see the
2958 comments for more info.
2961 - added a FAQ and WTF files to document frequently
2962 asked questions and common problems
2964 * Moose::Util::TypeConstraints
2965 - added GlobRef and FileHandle type constraint
2966 - added tests for this
2968 * Moose::Meta::Attribute
2969 - if your attribute 'isa' ArrayRef of HashRef, and you have
2970 not explicitly set a default, then make the default DWIM.
2971 This will also work for subtypes of ArrayRef and HashRef
2973 - you can now auto-deref subtypes of ArrayRef or HashRef too.
2974 - new test added for this (thanks to ashley)
2977 - added basic support for runtime role composition
2978 but this is still *highly experimental*, so feedback
2979 is much appreciated :)
2980 - added tests for this
2982 * Moose::Meta::TypeConstraint
2983 - the type constraint now handles the coercion process
2984 through delegation, this is to support the coercion
2987 * Moose::Meta::TypeConstraint::Union
2988 - it is now possible for coercions to be performed
2990 - added tests for this (thanks to konobi)
2992 * Moose::Meta::TypeCoercion
2993 - properly capturing error when type constraint
2997 - Scalar::Util 1.18 is bad on Win32, so temporarily
2998 only require version 1.17 for Win32 and cygwin.
2999 (thanks Adam Kennedy)
3001 0.12 Sat. Sept. 1, 2006
3003 - Recipe5 (subtypes & coercion) has been written
3006 - fixed "bad meta" error message to be more descriptive
3007 - fixed &unimport to not remove the &inner and &super
3008 keywords because we need to localize them.
3009 - fixed number of spelling/grammer issues, thanks Theory :)
3011 **~~ experimental & undocumented feature ~~**
3012 - added the method and self keywords, they are basically
3013 just sugar, and they may not stay around.
3016 - added &dump method to easily Data::Dumper
3019 * Moose::Meta::TypeConstraint
3020 - added the &is_a_type_of method to check both the current
3021 and the subtype of a method (similar to &isa with classes)
3024 - this is now a subclass of Class::MOP::Module, and no longer
3025 creates the _role_meta ugliness of before.
3026 - fixed tests to reflect this change
3028 0.11 Wed. July 12, 2006
3030 - added an &unimport method to remove all the keywords
3031 that Moose will import, simply add 'no Moose' to the
3032 bottom of your class file.
3035 - fixed some test failures caused by a forgotten test
3038 0.10 Thurs. July 6, 2006
3040 - improved error message when loading modules so
3041 it is less confusing when you load a role.
3042 - added &calculate_all_roles method to
3043 Moose::Meta::Class and Moose::Meta::Role
3046 This module has been tested against Class::MOP 0.30
3047 but it does not yet utilize the optimizations
3048 it makes available. Stay tuned for that ;)
3050 0.09_03 Fri. June 23, 2006
3051 ++ DEVELOPER RELEASE ++
3053 - 'use strict' and 'use warnings' are no longer
3054 needed in Moose classes, Moose itself will
3055 turn them on for you.
3056 - added tests for this
3057 - moved code from exported subs to private methods
3058 in Moose::Meta::Class
3061 - as with Moose, strict and warnings are
3062 automatically turned on for you.
3063 - added tests for this
3066 - now handles an edge case for override errors
3067 - added tests for this
3068 - added some more edge case tests
3070 0.09_02 Tues. May 16, 2006
3071 ++ DEVELOPER RELEASE ++
3073 - added prototypes to the exported subs
3077 - added prototypes to the exported subs
3080 * Moose::Util::TypeConstraints
3081 - cleaned up prototypes for the subs
3084 0.09_01 Fri. May 12, 2006
3085 ++ DEVELOPER RELEASE ++
3086 - This release works in combination with
3087 Class::MOP 0.29_01, it is a developer
3088 release because it uses the a new
3089 instance sub-protocol and a fairly
3090 complete Role implementation. It has
3091 not yet been optimized, so it slower
3092 the the previous CPAN version. This
3093 release also lacks good updated docs,
3094 the official release will have updated docs.
3097 - refactored the keyword exports
3098 - 'with' now checks Role validaity and
3099 accepts more than one Role at a time
3100 - 'extends' makes metaclass adjustments as
3101 needed to ensure metaclass compatibility
3104 - refactored the keyword exports
3105 - 'with' now checks Role validaity and
3106 accepts more than one Role at a time
3108 * Moose::Util::TypeConstraints
3109 - added the 'enum' keyword for simple
3110 string enumerations which can be used as
3112 - see example of usage in t/202_example.t
3115 - more careful checking of params to new()
3118 - much work done on the role composition
3119 - many new tests for conflict detection
3120 and composition edge cases
3121 - not enough documentation, I suggest
3122 looking at the tests
3124 * Moose::Meta::Instance
3125 - added new Instance metaclass to support
3126 the new Class::MOP instance protocol
3128 * Moose::Meta::Class
3129 - some small changes to support the new
3131 - some small additions to support Roles
3133 * Moose::Meta::Attribute
3134 - some improvements to the accessor generation code
3136 - some small changes to support the new
3138 - (still somewhat) experimental delegation support
3139 with the 'handles' option
3140 - added several tests for this
3141 - no docs for this yet
3143 0.05 Thurs. April 27, 2006
3145 - keywords are now exported with Sub::Exporter
3146 thanks to chansen for this commit
3147 - has keyword now takes a 'metaclass' option
3148 to support custom attribute meta-classes
3149 on a per-attribute basis
3150 - added tests for this
3151 - the 'has' keyword not accepts inherited slot
3152 specifications (has '+foo'). This is still an
3153 experimental feature and probably not finished
3154 see t/038_attribute_inherited_slot_specs.t for
3155 more details, or ask about it on #moose
3156 - added tests for this
3159 - keywords are now exported with Sub::Exporter
3161 * Moose::Utils::TypeConstraints
3162 - reorganized the type constraint hierarchy, thanks
3163 to nothingmuch and chansen for his help and advice
3165 - added some tests for this
3166 - keywords are now exported with Sub::Exporter
3167 thanks to chansen for this commit
3169 * Moose::Meta::Class
3170 - due to changes in Class::MOP, we had to change
3171 construct_instance (for the better)
3173 * Moose::Meta::Attribute
3174 - due to changes in Class::MOP, we had to add the
3175 initialize_instance_slot method (it's a good thing)
3177 * Moose::Meta::TypeConstraint
3178 - added type constraint unions
3179 - added tests for this
3180 - added the is_subtype_of predicate method
3181 - added tests for this
3183 0.04 Sun. April 16th, 2006
3185 - Roles can now consume other roles
3186 - added tests for this
3187 - Roles can specify required methods now with
3188 the requires() keyword
3189 - added tests for this
3192 - ripped out much of it's guts ,.. much cleaner now
3193 - added required methods and correct handling of
3194 them in apply() for both classes and roles
3195 - added tests for this
3196 - no longer adds a does() method to consuming classes
3197 it relys on the one in Moose::Object
3198 - added roles attribute and some methods to support
3199 roles consuming roles
3201 * Moose::Meta::Attribute
3202 - added support for triggers on attributes
3203 - added tests for this
3204 - added support for does option on an attribute
3205 - added tests for this
3207 * Moose::Meta::Class
3208 - added support for attribute triggers in the
3210 - added tests for this
3213 - Moose no longer creates a subtype for your class
3214 if a subtype of the same name already exists, this
3215 should DWIM in 99.9999% of all cases
3217 * Moose::Util::TypeConstraints
3218 - fixed bug where incorrect subtype conflicts were
3220 - added test for this
3223 - this class can now be extended with 'use base' if
3224 you need it, it properly loads the metaclass class now
3225 - added test for this
3227 0.03_02 Wed. April 12, 2006
3229 - you must now explictly use Moose::Util::TypeConstraints
3230 it no longer gets exported for you automatically
3233 - new() now accepts hash-refs as well as key/value lists
3234 - added does() method to check for Roles
3235 - added tests for this
3237 * Moose::Meta::Class
3238 - added roles attribute along with the add_role() and
3240 - added tests for this
3243 - now adds a does() method to consuming classes
3244 which tests the class's hierarchy for roles
3245 - added tests for this
3247 0.03_01 Mon. April 10, 2006
3249 - added new Role recipe (no content yet, only code)
3252 - added 'with' keyword for Role support
3253 - added test and docs for this
3254 - fixed subtype quoting bug
3255 - added test for this
3259 - added test and docs
3261 * Moose::Util::TypeConstraints
3262 - added the message keyword to add custom
3263 error messages to type constraints
3266 - the meta role to support Moose::Role
3267 - added tests and docs
3269 * Moose::Meta::Class
3270 - moved a number of things from Moose.pm
3271 to here, they should have been here
3274 * Moose::Meta::Attribute
3275 - moved the attribute option macros here
3276 instead of putting them in Moose.pm
3278 * Moose::Meta::TypeConstraint
3279 - added the message attributes and the
3281 - added tests and docs for this
3283 0.03 Thurs. March 30, 2006
3285 - added the Moose::Cookbook with 5 recipes,
3286 describing all the stuff Moose can do.
3289 - fixed an issue with &extends super class loading
3290 it now captures errors and deals with inline
3291 packages correctly (bug found by mst, solution
3293 - added super/override & inner/augment features
3294 - added tests and docs for these
3297 - BUILDALL now takes a reference of the %params
3298 that are passed to &new, and passes that to
3301 * Moose::Util::TypeConstraints
3302 - Type constraints now survive runtime reloading
3303 - added test for this
3305 * Moose::Meta::Class
3306 - fixed the way attribute defaults are handled
3307 during instance construction (bug found by chansen)
3309 * Moose::Meta::Attribute
3310 - read-only attributes now actually enforce their
3311 read-only-ness (this corrected in Class::MOP as
3314 0.02 Tues. March 21, 2006
3316 - many more tests, fixing some bugs and
3318 - &extends now loads the base module with
3320 - added UNIVERSAL::require to the
3323 - each new Moose class will also create
3324 and register a subtype of Object which
3325 correspond to the new Moose class.
3326 - the 'isa' option in &has now only
3327 accepts strings, and will DWIM in
3330 * Moose::Util::TypeConstraints
3331 - added type coercion features
3332 - added tests for this
3333 - added support for this in attributes
3334 and instance construction
3336 - type construction no longer creates a
3337 function, it registers the type instead.
3338 - added several functions to get the
3342 - BUILDALL and DEMOLISHALL were broken
3343 because of a mis-named hash key, Whoops :)
3345 * Moose::Meta::Attribute
3346 - adding support for coercion in the
3347 autogenerated accessors
3349 * Moose::Meta::Class
3350 - adding support for coercion in the
3351 instance construction
3353 * Moose::Meta::TypeConstraint
3354 * Moose::Meta::TypeCoercion
3355 - type constraints and coercions are now
3356 full fledges meta-objects
3358 0.01 Wed. March 15, 2006
3359 - Moooooooooooooooooose!!!