1 Also see Moose::Manual::Delta for more details of, and workarounds
2 for, noteworthy changes.
5 * Moose::Meta::Attribute
6 - When adding an attribute to a metaclass, if the attribute has no
7 associated methods, it will give a deprecation warning. (hdp)
8 - Methods generated by delegation were not being added to
9 associated_methods. (hdp)
11 * Moose::Util::TypeConstraints
12 * Moose::Meta::TypeConstraint::DuckType
13 - Reify duck type from a regular subtype into an actual class
16 0.83 Tue, Jun 23, 2009
18 - Fix _construct_instance not setting the special __MOP__ object
19 key in instances of anon classes. (doy)
21 0.82 Sun, Jun 21, 2009
22 * Moose::Manual::Types
23 - Mention MooseX::Types early to avoid users falling down the
24 string parsing rathole (mst)
26 * Moose::Manual::MooseX
27 - Add warnings about class-level extensions and mention considering
28 using plain objects instead
31 * Bumped our Class::MOP prereq to the latest version (0.85), since
36 - Add FAQ about the coercion change from 0.76 because it came up
37 three times today (perigrin)
38 - Win doy $10 dollars because Sartak didn't think anybody
39 would document this fast enough (perigrin)
41 * Moose::Meta::Method::Destructor
42 - Inline a DESTROY method even if there are no DEMOLISH methods
43 to prevent unnecessary introspection in
44 Moose::Object::DEMOLISHALL
47 - A role's required methods are now represented by
48 Moose::Meta::Role::Method::Required objects. Conflicts are now
49 represented by Moose::Meta::Role::Method::Conflicting
50 objects. The benefit for end-users in that unresolved
51 conflicts generate different, more instructive, errors,
52 resolving Ovid's #44895. (Sartak)
55 - Improve the error message of "extends" as suggested by Adam
56 Kennedy and confound (Sartak)
57 - Link to Moose::Manual::Roles from Moose::Role as we now have
58 excellent documentation (Adam Kennedy)
61 - Update test suite for subname change in Class::MOP
63 - Add TODO test for infinite recursion in Moose::Meta::Class
66 0.79 Wed, May 13, 2009
68 - More fixes for Win32 problems. Reported by Robert Krimen.
71 - The DEMOLISHALL method could still blow up in some cases
72 during global destruction. This method has been made more
73 resilient in the face of global destruction's random garbage
77 - If you "also" a module that isn't loaded, the error message
78 now acknowledges that (Sartak)
81 - When your ->meta method does not return a Moose::Meta::Class,
82 the error message gave the wrong output (Sartak)
84 0.78 Tue, May 12, 2009
85 * Moose::Cookbook::FAQ and Moose::Cookbook::WTF
86 - Merged these documents into what is now Moose::Manual::FAQ
89 - Moved to Moose::Manual::Unsweetened
91 * Moose::Cookbook::Basics::Recipes 9-12
92 - Renamed to be 8-11, since recipe 8 did not exist
95 - Make Moose::Exporter import strict and warnings into packages
99 - Fix DEMOLISHALL sometimes not being able to find DEMOLISH
100 methods during global destruction (doy)
103 * Moose::Meta::Role::Application::ToClass
104 - Track the Role::Application objects created during class-role
108 - Fix metaclass incompatibility errors when extending a vanilla perl
109 class which isa Moose class with a metaclass role applied (t0m)
112 - Add a role-combination hook, _role_for_combination, for the
113 benefit of MooseX::Role::Parameterized (Sartak)
116 - Some tests were failing on Win32 because they explicit checked
117 warning output for newlines. Reported by Nickolay Platonov.
119 0.77 Sat, May 2, 2009
121 - Add explicit use of Devel::GlobalDestruction and Sub::Name
125 - Pass a boolean to DEMOLISHALL and DEMOLISH indicating whether
126 or not we are currently in global destruction (doy)
127 - Add explicit use of Devel::GlobalDestruction and Sub::Name
130 * Moose::Cookbook::FAQ
131 - Reworked much of the existing content to be more useful to
132 modern Moose hackers (Sartak)
135 - Depend on Class::MOP 0.83 instead of 0.82_01.
137 0.76 Mon, April 27, 2009
138 * Moose::Meta::TypeConstraint
139 - Do not run coercions in coerce() if the value already passes the type
142 * Moose::Meta::TypeConstraint::Class
143 - In validation error messages, specifically say that the value is not
144 an instance of the class. This should alleviate some frustrating
145 forgot-to-load-my-type bugs. rt.cpan.org #44639 (Sartak)
147 * Moose::Meta::Role::Application::ToClass
148 - Revert the class-overrides-role warning in favor of a solution outside
149 of the Moose core (Sartak)
152 - Make Test::Output optional again, since it's only used in a few files
155 0.75_01 Thu, April 23, 2009
156 * Moose::Meta::Role::Application::ToClass
157 - Moose now warns about each class overriding methods from roles it
161 - Warnings tests have standardized on Test::Output which is now an
162 unconditionally dependency (Sartak)
165 - Changes to immutabilization to work with Class::MOP 0.82_01+.
167 0.75 Mon, April 20, 2009
170 - Move validation of not inheriting from roles from Moose::extends to
171 Moose::Meta::Class::superclasses (doy)
174 - add ensure_all_roles() function to encapsulate the common "apply this
175 role unless the object already does it" pattern (hdp)
178 - Users can now select a different metaclass with the "-metaclass"
179 option to import, for classes and roles (Sartak)
182 - Make method_metaclass an attr so that it can accept a metarole
185 0.74 Tue, April 7, 2009
187 * Moose::Meta::Method::Destructor
188 - Include stack traces in the deprecation warnings.
192 - Removed the long-deprecated _apply_all_roles method.
194 * Moose::Meta::TypeConstraint
195 - Removed the long-deprecated union method.
198 0.73_02 Mon, April 6, 2009
199 * More deprecations and renamings
200 - Moose::Meta::Method::Constructor
201 - initialize_body => _initialize_body (this is always called
202 when an object is constructed)
205 - The DEMOLISHALL method could throw an exception during global
206 destruction, meaning that your class's DEMOLISH methods would
207 not be properly called. Reported by t0m.
209 * Moose::Meta::Method::Destructor
210 - Destructor inlining was totally broken by the change to the
211 is_needed method in 0.72_01. Now there is a test for this
212 feature, and it works again.
215 - Bold the word 'not' in the POD for find_meta (t0m)
217 0.73_01 Sun, April 5, 2009
219 - Call user_class->meta in fewer places, with the eventual goal
220 of allowing the user to rename or exclude ->meta
221 altogether. Instead uses Class::MOP::class_of. (Sartak)
223 * Moose::Meta::Method::Accessor
224 - If an attribute had a lazy default, and that value did not
225 pass the attribute's type constraint, it did not get the
226 message from the type constraint, instead using a generic
227 message. Test provided by perigrin.
229 * Moose::Util::TypeConstraints
230 - Add duck_type keyword. It's sugar over making sure an object
231 can() a list of methods. This is easier than jrockway's
232 suggestion to fork all of CPAN. (perigrin)
233 - add tests and documentation (perigrin)
236 - Document the fact that init_meta() returns the target class's
237 metaclass object. (hdp)
239 * Moose::Cookbook::Extending::Recipe1
240 * Moose::Cookbook::Extending::Recipe2
241 * Moose::Cookbook::Extending::Recipe3
242 * Moose::Cookbook::Extending::Recipe4
243 - Make init_meta() examples explicitly return the metaclass and
244 point out this fact. (hdp)
246 * Moose::Cookbook::Basics::Recipe12
247 - A new recipe, creating a custom meta-method class.
249 * Moose::Cookbook::Meta::Recipe6
250 - A new recipe, creating a custom meta-method class.
253 * Moose::Meta::Method::Constructor
254 - Attribute triggers no longer receive the meta-attribute object
255 as an argument in any circumstance. Previously, triggers
256 called during instance construction were passed the
257 meta-attribute, but triggers called by normal accessors were
258 not. Fixes RT#44429, reported by Mark Swayne. (hdp)
260 * Moose::Manual::Attributes
261 - Remove references to triggers receving the meta-attribute object as an
264 * Moose::Cookbook::FAQ
265 - Remove recommendation for deprecated Moose::Policy and
266 Moose::Policy::FollowPBP; recommend MooseX::FollowPBP
269 * Many methods have been renamed with a leading underscore, and a
270 few have been deprecated entirely. The methods with a leading
271 underscore are consider "internals only". People writing
272 subclasses or extensions to Moose should feel free to override
273 them, but they are not for "public" use.
276 - check_metaclass_compatibility => _check_metaclass_compatibility
278 - Moose::Meta::Method::Accessor
279 - initialize_body => _initialize_body (this is always called
280 when an object is constructed)
281 - /(generate_.*_method(?:_inline)?)/ => '_' . $1
283 - Moose::Meta::Method::Constructor
284 - initialize_body => _initialize_body (this is always called
285 when an object is constructed)
286 - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
287 - attributes => _attributes (now inherited from parent)
288 - meta_instance => _meta_instance (now inherited from parent)
291 - alias_method is deprecated. Use add_method
293 0.73 Fri, March 29, 2009
294 * No changes from 0.72_01.
296 0.72_01 Thu, March 26, 2009
298 - Almost every module has complete API documentation. A few
299 methods (and even whole classes) have been intentionally
300 excluded pending some rethinking of their APIs.
302 * Moose::Util::TypeConstraints
303 - Calling subtype with a name as the only argument is now an
304 exception. If you want an anonymous subtype do:
306 my $subtype = subtype as 'Foo';
308 * Moose::Cookbook::Meta::Recipe7
309 - A new recipe, creating a custom meta-instance class.
311 * Moose::Cookbook::Basics::Recipe5
312 - Fix various typos and mistakes. Includes a patch from Radu
315 * Moose::Cookbook::Basics::Recipe9
316 - Link to this recipe from Moose.pm's builder blurb
319 - When wrapping a function with a prototype, Moose::Exporter now
320 makes sure the wrapped function still has the same
321 prototype. (Daisuke Maki)
323 * Moose::Meta::Attribute
324 - Allow a subclass to set lazy_build for an inherited
328 - Explicitly depend on Data::OptList. We already had this dependency
329 via Sub::Exporter, but since we're using it directly we're
330 better off with it listed. (Sartak)
332 * Moose::Meta::Method::Constructor
333 - Make it easier to subclass the inlining behaviour. (Ash
336 * Moose::Manual::Delta
337 - Details significant changes in the history of Moose, along
338 with recommended workarounds.
340 * Moose::Manual::Contributing
341 - Contributor's guide to Moose.
343 * Moose::Meta::Method::Constructor
344 - The long-deprecated intialize_body method has been removed
345 (yes, spelled like that).
347 * Moose::Meta::Method::Destructor
348 - This is_needed method is now always a class method.
351 - Changes to the internals of how make_immutable works to match
352 changes in latest Class::MOP.
354 0.72 Mon, February 23, 2009
356 * Moose::Meta::Method::Constructor
357 - A mutable class accepted Foo->new(undef) without complaint,
358 while an immutable class would blow up with an unhelpful
359 error. Now, in both cases we throw a helpful error
360 instead. Reported by doy.
362 0.71_01 Sun, February 22, 2009
364 - Hopefully fixed some POD errors in a few recipes that caused
365 them to display weird on search.cpan.org.
367 * Moose::Util::TypeConstraints
368 - Calling type or subtype without the sugar helpers (as, where,
369 message) is now deprecated.
370 - The subtype function tried hard to guess what you meant, but
371 often got it wrong. For example:
373 my $subtype = subtype as 'ArrayRef[Object]';
375 This caused an error in the past, but now works as you'd
379 - Make sure Moose.pm is loaded before calling
380 Moose->throw_error. This wasn't normally an issue, but could
381 bite you in weird cases.
383 0.71 Thu, February 19, 2009
384 * Moose::Cookbook::Basics::Recipe11
385 - A new recipe which demonstrates the use of BUILDARGS and
388 * Moose::Cookbook::Roles::Recipe3
389 - A new recipe, applying a role to an object instance. (Dave
393 - Allow overriding specific keywords from "also" packages. (doy)
396 - Replace hardcoded cookbook tests with Test::Inline to ensure
397 the tests match the actual code in the recipes. (Dave Rolsky)
400 - Working on the above turned up a number of little bugs in the
401 recipe code. (Dave Rolsky)
403 * Moose::Util::TypeConstraints::Optimized
404 - Just use Class::MOP for the optimized ClassName check. (Dave
407 0.70 Sat, February 14, 2009
408 * Moose::Util::TypeConstraints
409 - Added the RoleName type (stevan)
410 - added tests for this (stevan)
412 * Moose::Cookbook::Basics::Recipe3
413 - Updated the before qw[left right] sub to be a little more
414 defensive about what it accepts (stevan)
415 - added more tests to t/000_recipies/basics/003_binary_tree.t
419 - We now always call DEMOLISHALL, even if a class does not
420 define DEMOLISH. This makes sure that method modifiers on
421 DEMOLISHALL work as expected. (doy)
422 - added tests for this (EvanCarroll)
424 * Moose::Util::MetaRole
425 - Accept roles for the wrapped_method_metaclass (rafl)
426 - added tests for this (rafl)
428 * Moose::Meta::Attribute
429 - We no longer pass the meta-attribute object as a final
430 argument to triggers. This actually changed for inlined code a
431 while back, but the non-inlined version and the docs were
435 - Some tests tried to use Test::Warn 0.10, which had bugs. Now
436 they require 0.11. (Dave Rolsky)
439 - Lots of small changes to the manual, cookbook, and
440 elsewhere. These were based on feedback from various
441 users, too many to list here. (Dave Rolsky)
443 0.69 Thu, February 12, 2009
445 - Make some keyword errors use throw_error instead of croak
446 since Moose::Exporter wraps keywords now (Sartak)
449 - Revised every recipe for style and clarity. Also moved some
450 documentation out of cookbook recipes and into Moose::Manual
451 pages. This work was funded as part of the Moose docs grant
452 from TPF. (Dave Rolsky)
454 * Moose::Meta::Method::Delegation
455 - If the attribute doing the delegation was not populated, the
456 error message did not specify the attribute name
459 0.68 Wed, February 4, 2009
461 - Many spelling, typo, and formatting fixes by daxim.
463 * Moose::Manual::Attributes
464 - The NAME section in the POD used "Attribute" so search.cpan
465 didn't resolve links from other documents properly.
467 * Moose::Meta::Method::Overriden
468 - Now properly spelled as Overridden. Thanks to daxim for
471 0.67 Tue, February 3, 2009
473 - Lots of little typo fixes and a few clarifications. Several
474 pages didn't have proper titles, and so weren't actually
475 visible on search.cpan.org. Thanks to hanekomu for a variety
476 of fixes and formatting improvements.
478 0.66 Tue, February 3, 2009
480 - This is a brand new, extensive manual for Moose. This aims to
481 provide a complete introduction to all of Moose's
482 features. This work was funded as part of the Moose docs grant
483 from TPF. (Dave Rolsky)
485 * Moose::Meta::Attribute
486 - Added a delegation_metaclass method to replace a hard-coded
487 use of Moose::Meta::Method::Delegation. (Dave Rolsky)
489 * Moose::Util::TypeConstraints
490 - If you created a subtype and passed a parent that Moose didn't
491 know about, it simply ignored the parent. Now it automatically
492 creates the parent as a class type. This may not be what you
493 want, but is less broken than before. (Dave Rolsky)
495 * Moose::Util::TypeConstraints
496 - This module tried throw errors by calling Moose->throw_error,
497 but it did not ensure that Moose was loaded first. This could
498 cause very unhelpful errors when it tried to throw an error
499 before Moose was loaded. (Dave Rolsky)
501 * Moose::Util::TypeConstraints
502 - You could declare a name with subtype such as "Foo!Bar" that
503 would be allowed, but if you used it in a parameterized type
504 such as "ArrayRef[Foo!Bar]" it wouldn't work. We now do some
505 vetting on names created via the sugar functions, so that they
506 can only contain alphanumerics, ":", and ".". (Dave Rolsky)
508 0.65 Thu, January 22, 2008
509 * Moose and Moose::Meta::Method::Overridden
510 - If an overridden method called super(), and then the
511 superclass's method (not overridden) _also_ called super(),
512 Moose went into an endless recursion loop. Test provided by
513 Chris Prather. (Dave Rolsky)
515 * Moose::Meta::TypeConstraint
516 - All methods are now documented. (gphat)
518 * t/100_bugs/011_DEMOLISH_eats_exceptions.t
519 - Fixed some bogus failures that occurred because we tried to
520 validate filesystem paths in a very ad-hoc and
521 not-quite-correct way. (Dave Rolsky)
523 * Moose::Util::TypeConstraints
524 - Added maybe_type to exports. See docs for details. (rjbs)
527 - Added Moose::Util::TypeConstraints to the SEE ALSO
531 - Methods created via an attribute can now fulfill a "requires"
532 declaration for a role. (nothingmuch)
534 * Moose::Meta::Method::*
535 - Stack traces from inlined code will now report its line and
536 file as being in your class, as opposed to in Moose
539 0.64 Wed, December 31, 2008
540 * Moose::Meta::Method::Accessor
541 - Always inline predicate and clearer methods (Sartak)
543 * Moose::Meta::Attribute
544 - Support for parameterized traits (Sartak)
545 - verify_against_type_constraint method to avoid duplication
546 and enhance extensibility (Sartak)
549 - Tests (but no support yet) for parameterized traits (Sartak)
552 - Require Class::MOP 0.75+, which has the side effect of making
553 sure we work on Win32. (Dave Rolsky)
555 0.63 Mon, December 8, 2008
557 - Some small grammar tweaks and bug fixes in non-Moose example
560 0.62_02 Fri, December 5, 2008
561 * Moose::Meta::Role::Application::ToClass
562 - When a class does not provide all of a role's required
563 methods, the error thrown now mentions all of the missing
564 methods, as opposed to just the first one found. Requested by
565 Curtis Poe (RT #41119). (Dave Rolsky)
567 * Moose::Meta::Method::Constructor
568 - Moose will no longer inline a constructor for your class
569 unless it inherits its constructor from Moose::Object, and
570 will warn when it doesn't inline. If you want to force
571 inlining anyway, pass "replace_constructor => 1" to
572 make_immutable. Addresses RT #40968, reported by Jon
573 Swartz. (Dave Rolsky)
574 - The quoting of default values could be broken if the default
575 contained a single quote ('). Now we use quotemeta to escape
576 anything potentially dangerous in the defaults. (Dave Rolsky)
578 0.62_01 Wed, December 3, 2008
580 - use the method->execute API for BUILDALL
581 and DEMOLISHALL (Sartak)
583 * Moose::Util::TypeConstraints
584 - We now make all the type constraint meta classes immutable
585 before creating the default types provided by Moose. This
586 should make loading Moose a little faster. (Dave Rolsky)
588 0.62 Wed November 26, 2008
589 * Moose::Meta::Role::Application::ToClass
590 Moose::Meta::Role::Application::ToRole
591 - fixed issues where excluding and aliasing the
592 same methods for a single role did not work
593 right (worked just fine with multiple
595 - added test for this (stevan)
597 * Moose::Meta::Role::Application::RoleSummation
598 - fixed the error message when trying to compose
599 a role with a role it excludes (Sartak)
602 - Catch another case where recursion caused the value
603 of $CALLER to be stamped on (t0m)
604 - added test for this (t0m)
607 - Remove the make_immutable keyword, which has been
608 deprecated since April. It breaks metaclasses that
609 use Moose without no Moose (Sartak)
611 * Moose::Meta::Attribute
612 - Removing an attribute from a class now also removes delegation
613 (handles) methods installed for that attribute (t0m)
614 - added test for this (t0m)
616 * Moose::Meta::Method::Constructor
617 - An attribute with a default that looked like a number (but was
618 really a string) would accidentally be treated as a number
619 when the constructor was made immutable (perigrin)
620 - added test for this (perigrin)
623 - create method for constructing a role
625 - added test for this (Sartak)
626 - anonymous roles! (Sartak)
627 - added test for this (Sartak)
630 - more consistent error messages (Sartak)
632 * Moose::Cookbook::Roles::Recipe1
633 - attempt to explain why a role that just requires
634 methods is useful (Sartak)
636 0.61 Fri November 7, 2008
637 * Moose::Meta::Attribute
638 - When passing a role to handles, it will be loaded if necessary
642 - Method objects returned by get_method (and other methods)
643 Could end up being returned without an associated_metaclass
644 attribute. Removing get_method_map, which is provided by
645 Class::MOP::Class, fixed this. The Moose version did nothing
646 different from its parent except introduce a bug. (Dave Rolsky)
647 - added tests for this (jdv79)
650 - Added a $VERSION to all .pm files which didn't have one. Fixes
651 RT #40049, reported by Adam Kennedy. (Dave Rolsky)
653 * Moose::Cookbook::Basics::Recipe4
654 * Moose::Cookbook::Basics::Recipe6
655 - These files had spaces on the first line of the SYNOPSIS, as
656 opposed to a totally empty line. According to RT #40432, this
657 confuses POD parsers. (Dave Rolsky)
659 0.60 Fri October 24, 2008
661 - Passing "-traits" when loading Moose caused the Moose.pm
662 exports to be broken. Reported by t0m. (Dave Rolsky)
663 - Tests for this bug. (t0m)
666 - Change resolve_metaclass alias to use the new
667 load_first_existing_class function. This makes it a lot
668 simpler, and also around 5 times faster. (t0m)
669 - Add caching to resolve_metaclass_alias, which gives an order
670 of magnitude speedup to things which repeatedly call the
671 Moose::Meta::Attribute->does method, notably MooseX::Storage
674 * Moose::Util::TypeConstraint
675 - Put back the changes for parameterized constraints that
676 shouldn't have been removed in 0.59. We still cannot parse
677 them, but MooseX modules can create them in some other
678 way. See the 0.58 changes for more details. (jnapiorkowski)
679 - Changed the way subtypes are created so that the job is
680 delegated to a type constraint parent. This clears up some
681 hardcoded checking and should allow correct subtypes of
682 Moose::Meta::Type::Constraint. Don't rely on this new API too
683 much (create_child_type) because it may go away in the
684 future. (jnapiorkowski)
686 * Moose::Meta::TypeConstraint::Union
687 - Type constraint names are sorted as strings, not numbers.
690 * Moose::Meta::TypeConstraint::Parameterizable
691 - New parameterize method. This can be used as a factory method
692 to make a new type constraint with a given parameterized
693 type. (jnapiorkowski)
694 - added tests (jnapiorkowski)
696 0.59 Tue October 14, 2008
698 - Add abridged documentation for builder/default/initializer/
699 predicate, and link to more details sections in
700 Class::MOP::Attribute. (t0m)
702 * Moose::Util::TypeConstraints
703 - removed prototypes from all but the &-based stuff (mst)
705 * Moose::Util::TypeConstraints
706 - Creating a anonymous subtype with both a constraint and a
707 message failed with a very unhelpful error, but should just
708 work. Reported by t0m. (Dave Rolsky)
711 - Some tests that used Test::Warn if it was available failed
712 with older versions of Test::Warn. Reported by Fayland. (Dave
714 - Test firing behavior of triggers in relation to builder/default/
716 - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
717 kinds of supported type. (t0m)
720 - In create(), do not pass "roles" option to the superclass
721 - added related test that creates an anon metaclass with
724 * Moose::Meta::TypeConstraint::Class
725 * Moose::Meta::TypeConstraint::Role
726 - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
727 other types (as per change in 0.55_02). (t0m)
729 * Moose::Meta::TypeConstraint::Registry
730 - Fix warning when dealing with unknown type names (t0m)
732 * Moose::Util::TypeConstraints
733 - Reverted changes from 0.58 related to handle parameterized
734 types. This caused random failures on BSD and Win32 systems,
735 apparently related to the regex engine. This means that Moose
736 can no longer parse structured type constraints like
737 ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
738 supported in a slightly different way via MooseX::Types some
739 time in the future. (Dave Rolsky)
741 0.58 Sat September 20, 2008
742 !! This release has an incompatible change regarding !!
743 !! how roles add methods to a class !!
745 * Roles and role application
746 ! Roles now add methods by calling add_method, not
747 alias_method. They make sure to always provide a method
748 object, which will be cloned internally. This means that it is
749 now possible to track the source of a method provided by a
750 role, and even follow its history through intermediate roles.
752 This means that methods added by a role now show up when
753 looking at a class's method list/map. (Dave Rolsky)
756 - From this release on, we'll try to maintain a list of
757 conflicting modules, and warn you if you have one
758 installed. For example, this release conflicts with ...
759 - MooseX::Singleton <= 0.11
760 - MooseX::Params::Validate <= 0.05
763 In general, we try to not break backwards compatibility for
764 most Moose users, but MooseX modules and other code which
765 extends Moose's metaclasses is often affected by very small
766 changes in the Moose internals.
768 * Moose::Meta::Method::Delegation
769 * Moose::Meta::Attribute
770 - Delegation methods now have their own method class. (Dave
773 * Moose::Meta::TypeConstraint::Parameterizable
774 - Added a new method 'parameterize' which is basically a factory
775 for the containing constraint. This makes it easier to create
776 new types of parameterized constraints. (jnapiorkowski)
778 * Moose::Meta::TypeConstraint::Union
779 - Changed the way Union types canonicalize their names to follow
780 the normalized TC naming rules, which means we strip all
781 whitespace. (jnapiorkowski)
783 * Moose::Util::TypeConstraints
784 - Parameter and Union args are now sorted, this makes Int|Str
785 the same constraint as Str|Int. (jnapiorkowski)
786 - Changes to the way Union types are parsed to more correctly
787 stringify their names. (jnapiorkowski)
788 - When creating a parameterized type, we now use the new
789 parameterize method. (jnapiorkowski)
790 - Incoming type constraint strings are now normalized to remove
791 all whitespace differences. (jnapiorkowski)
792 - Changed the way we parse type constraint strings so that we now
793 match TC[Int,Int,...] and TC[name=>Str] as parameterized type
794 constraints. This lays the foundation for more flexible type
795 constraint implementations.
797 * Tests and docs for all the above. (jnapiorkowski)
801 - Moose::Exporter will no longer remove a subroutine that the
802 exporting package re-exports. Moose re-exports the
803 Carp::confess function, among others. The reasoning is that we
804 cannot know whether you have also explicitly imported those
805 functions for your own use, so we err on the safe side and
806 always keep them. (Dave Rolsky)
807 - added tests for this (rafl)
810 - Changes to how we fix metaclass compatibility that are much
811 too complicated to go into. The summary is that Moose is much
812 less likely to complain about metaclass incompatibility
813 now. In particular, if two metaclasses differ because
814 Moose::Util::MetaRole was used on the two corresponding
815 classes, then the difference in roles is reconciled for the
816 subclass's metaclass. (Dave Rolsky)
817 - Squashed an warning in _process_attribute (thepler)
820 - throw exceptions (sooner) for invalid attribute names (thepler)
821 - added tests for this (thepler)
823 * Moose::Util::MetaRole
824 - If you explicitly set a constructor or destructor class for a
825 metaclass object, and then applied roles to the metaclass,
826 that explicitly set class would be lost and replaced with the
830 * Moose::Meta::Attribute
831 * Moose::Meta::Method
834 * Moose::Error::Default
835 * Moose::Error::Croak
836 * Moose::Error::Confess
837 - All instances of confess() changed to use overridable
838 C<throw_error> method. This method ultimately calls a class
839 constructor, and you can change the class being called. In
840 addition, errors now pass more information than just a string.
841 The default C<error_class> behaves like C<Carp::confess>, so
842 the behavior is not visibly different for end users.
844 0.57 Wed September 3, 2008
846 - A new bit of doc intended to introduce folks familiar with
847 "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
850 - Shows examples of two classes, each done first with and then
851 without Moose. This makes a nice parallel to
852 Moose::Intro. (Dave Rolsky)
854 * Moose::Util::TypeConstraints
855 - Fixed a bug in find_or_parse_type_constraint so that it
856 accepts a Moose::Meta::TypeConstraint object as the parent
857 type, not just a name (jnapiorkowski)
858 - added tests (jnapiorkowski)
861 - If Sub::Name was not present, unimporting failed to actually
862 remove some sugar subs, causing test failures (Dave Rolsky)
864 0.56 Mon September 1, 2008
865 For those not following the series of dev releases, there are
866 several major changes in this release of Moose.
867 ! Moose::init_meta should now be called as a method. See the
870 - Major performance improvements by nothingmuch.
872 - New modules for extension writers, Moose::Exporter and
873 Moose::Util::MetaRole by Dave Rolsky.
875 - Lots of doc improvements and additions, especially in the
880 * Removed all references to the experimental-but-no-longer-needed
881 Moose::Meta::Role::Application::ToMetaclassInstance.
883 * Require Class::MOP 0.65.
885 0.55_04 Sat August 30, 2008
886 * Moose::Util::MetaRole
887 * Moose::Cookbook::Extending::Recipe2
888 - This simplifies the application of roles to any meta class, as
889 well as the base object class. Reimplemented metaclass traits
890 using this module. (Dave Rolsky)
892 * Moose::Cookbook::Extending::Recipe1
893 - This a new recipe, an overview of various ways to write Moose
894 extensions (Dave Rolsky)
896 * Moose::Cookbook::Extending::Recipe3
897 * Moose::Cookbook::Extending::Recipe4
898 - These used to be Extending::Recipe1 and Extending::Recipe2,
901 0.55_03 Fri August 29, 2008
902 * No changes from 0.55_02 except increasing the Class::MOP
903 dependency to 0.64_07.
905 0.55_02 Fri August 29, 2008
906 * Makefile.PL and Moose.pm
907 - explicitly require Perl 5.8.0+ (Dave Rolsky)
909 * Moose::Util::TypeConstraints
910 - Fix warnings from find_type_constraint if the type is not
913 * Moose::Meta::TypeConstraint
914 - Predicate methods (equals/is_a_type_of/is_subtype_of) now
915 return false if the type you specify cannot be found in the
916 type registry, rather than throwing an unhelpful and
917 coincidental exception. (t0m).
918 - added docs & test for this (t0m)
920 * Moose::Meta::TypeConstraint::Registry
921 - add_type_constraint now throws an exception if a parameter is
923 - added docs & test for this (t0m)
925 * Moose::Cookbook::FAQ
926 - Added a faq entry on the difference between "role" and "trait"
930 - Fixed a bug that caused role composition to not see a required
931 method when that method was provided by another role being
932 composed at the same time. (Dave Rolsky)
933 - test and bug finding (tokuhirom)
935 0.55_01 Wed August 20, 2008
937 !! Calling Moose::init_meta as a function is now !!
938 !! deprecated. Please see the Moose.pm docs for details. !!
940 * Moose::Meta::Method::Constructor
941 - Fix inlined constructor so that values produced by default
942 or builder methods are coerced as required. (t0m)
943 - added test for this (t0m)
945 * Moose::Meta::Attribute
946 - A lazy attribute with a default or builder did not attempt to
947 coerce the default value. The immutable code _did_
949 - added test for this (t0m)
952 - This is a new helper module for writing "Moose-alike"
953 modules. This should make the lives of MooseX module authors
954 much easier. (Dave Rolsky)
957 * Moose::Cookbook::Meta::Recipe5
958 - Implemented metaclass traits (and wrote a recipe for it):
960 use Moose -traits => 'Foo'
962 This should make writing small Moose extensions a little
965 * Moose::Cookbook::Basics::Recipe1
966 - Removed any examples of direct hashref access, and applied an
967 editorial axe to reduce verbosity. (Dave Rolsky)
969 * Moose::Cookbook::Basics::Recipe1
970 - Also applied an editorial axe here. (Dave Rolsky)
973 * Moose::Cookbook::Extending::Recipe1
974 * Moose::Cookbook::Extending::Recipe2
975 - Rewrote extending and embedding moose documentation and
976 recipes to use Moose::Exporter (Dave Rolsky)
980 - These two modules now warn when you load them from the main
981 package "main" package, because we will not export sugar to
982 main. Previously it just did nothing. (Dave Rolsky)
985 - Now provide an init_meta method just like Moose.pm, and you
986 can call this to provide an alternate role metaclass. (Dave
987 Rolsky and nothingmuch)
988 - get_method_map now respects the package cache flag (nothingmuch)
991 - Two new methods - add_method and wrap_method_body
995 - Optimizations including allowing constructors to accept hash
996 refs, making many more classes immutable, and making
997 constructors immutable. (nothingmuch)
999 0.55 Sun August 3, 2008
1000 * Moose::Meta::Attribute
1001 - breaking down the way 'handles' methods are
1002 created so that the process can be more easily
1003 overridden by subclasses (stevan)
1005 * Moose::Meta::TypeConstraint
1006 - fixing what is passed into a ->message with
1007 the type constraints (RT #37569)
1008 - added tests for this (Charles Alderman)
1010 * Moose::Util::TypeConstraints
1011 - fix coerce to accept anon types like subtype can (mst)
1014 - reorganized the recipes into sections - Basics, Roles, Meta,
1015 Extending - and wrote abstracts for each section (Dave Rolsky)
1017 * Moose::Cookbook::Basics::Recipe10
1018 - A new recipe that demonstrates operator overloading
1019 in combination with Moose. (bluefeet)
1021 * Moose::Cookbook::Meta::Recipe1
1022 - an introduction to what meta is and why you'd want to make
1023 your own metaclass extensions (Dave Rolsky)
1025 * Moose::Cookbook::Meta::Recipe4
1026 - a very simple metaclass example (Dave Rolsky)
1028 * Moose::Cookbook::Extending::Recipe1
1029 - how to write a Moose-alike module to use your own object base
1032 * Moose::Cookbook::Extending::Recipe2
1033 - how to write modules with an API just like C<Moose.pm> (Dave
1037 - Tons of fixes, both syntactical and grammatical (Dave
1038 Rolsky, Paul Fenwick)
1040 0.54 Thurs. July 3, 2008
1041 ... this is not my day today ...
1043 * Moose::Meta::Attribute
1044 - fixed legal_options_for_inheritance such that
1045 clone_and_inherit options still works for
1046 Class::MOP::Attribute objects and therefore
1047 does not break MooseX::AttributeHelpers
1050 0.53 Thurs. July 3, 2008
1051 * Whoops, I guess I should run 'make manifest' before
1052 actually releasing the module. No actual changes
1053 in this release, except the fact that it includes
1054 the changes that I didn't include in the last
1057 0.52 Thurs. July 3, 2008
1059 - added "FEATURE REQUESTS" section to the Moose docs
1060 to properly direct people (stevan) (RT #34333)
1061 - making 'extends' croak if it is passed a Role since
1062 this is not ever something you want to do
1063 (fixed by stevan, found by obra)
1064 - added tests for this (stevan)
1067 - adding support for DOES (as in UNIVERSAL::DOES)
1069 - added test for this
1071 * Moose::Meta::Attribute
1072 - added legal_options_for_inheritance (wreis)
1073 - added tests for this (wreis)
1075 * Moose::Cookbook::Snacks::*
1076 - removed some of the unfinished snacks that should
1077 not have been released yet. Added some more examples
1078 to the 'Keywords' snack. (stevan)
1080 * Moose::Cookbook::Style
1081 - added general Moose "style guide" of sorts to the
1082 cookbook (nothingmuch) (RT #34335)
1085 - added more BUILDARGS tests (stevan)
1087 0.51 Thurs. Jun 26, 2008
1089 - add unimport so "no Moose::Role" actually does
1092 * Moose::Meta::Role::Application::ToRole
1093 - when RoleA did RoleB, and RoleA aliased a method from RoleB in
1094 order to provide its own implementation, that method still got
1095 added to the list of required methods for consumers of
1096 RoleB. Now an aliased method is only added to the list of
1097 required methods if the role doing the aliasing does not
1098 provide its own implementation. See Recipe 11 for an example
1099 of all this. (Dave Rolsky)
1100 - added tests for this
1102 * Moose::Meta::Method::Constructor
1103 - when a single argument that wasn't a hashref was provided to
1104 an immutabilized constructor, the error message was very
1105 unhelpful, as opposed to the non-immutable error. Reported by
1107 - added test for this (Dave Rolsky)
1109 * Moose::Meta::Attribute
1110 - added support for meta_attr->does("ShortAlias") (sartak)
1111 - added tests for this (sartak)
1112 - moved the bulk of the `handles` handling to the new
1113 install_delegation method (Stevan)
1116 - Added BUILDARGS, a new step in new()
1118 * Moose::Meta::Role::Application::RoleSummation
1119 - fix typos no one ever sees (sartak)
1121 * Moose::Util::TypeConstraints
1122 * Moose::Meta::TypeConstraint
1123 * Moose::Meta::TypeCoercion
1124 - Attempt to work around the ??{ } vs. threads issue
1126 - Some null_constraint optimizations
1128 0.50 Thurs. Jun 11, 2008
1129 - Fixed a version number issue by bumping all modules
1132 0.49 Thurs. Jun 11, 2008
1133 !! This version now approx. 20-25% !!
1134 !! faster with new Class::MOP 0.59 !!
1136 * Moose::Meta::Attribute
1137 - fixed how the is => (ro|rw) works with
1138 custom defined reader, writer and accessor
1140 - added docs for this (TODO).
1141 - added tests for this (Thanks to Penfold)
1142 - added the custom attribute alias for regular
1143 Moose attributes which is "Moose"
1144 - fix builder and default both being used
1149 Moose::Meta::Attribute
1151 Moose::Meta::Role::Composite
1152 Moose::Util::TypeConstraints
1153 - switched usage of reftype to ref because
1157 - changing add_package_symbol to use the new
1161 - fixed how DEMOLISHALL is called so that it
1162 can be overrided in subclasses (thanks to Sartak)
1163 - added test for this (thanks to Sartak)
1165 * Moose::Util::TypeConstraints
1166 - move the ClassName type check code to
1167 Class::MOP::is_class_loaded (thanks to Sartak)
1169 * Moose::Cookbook::Recipe11
1170 - add tests for this (thanks to tokuhirom)
1172 0.48 Thurs. May 29, 2008
1173 (early morning release engineering)--
1175 - fixing the version in Moose::Meta::Method::Destructor
1176 which was causing the indexer to choke
1178 0.47 Thurs. May 29, 2008
1179 (late night release engineering)--
1181 - fixing the version is META.yml, no functional
1182 changes in this release
1184 0.46 Wed. May 28, 2008
1185 !! This version now approx. 20-25% !!
1186 !! faster with new Class::MOP 0.57 !!
1188 * Moose::Meta::Class
1189 - some optimizations of the &initialize method
1190 since it is called so often by &meta
1192 * Moose::Meta::Class
1194 - now use the get_all_package_symbols from the
1195 updated Class::MOP, test suite is now 10 seconds
1198 * Moose::Meta::Method::Destructor
1199 - is_needed can now also be called as a class
1200 method for immutablization to check if the
1201 destructor object even needs to be created
1204 * Moose::Meta::Method::Destructor
1205 Moose::Meta::Method::Constructor
1206 - added more descriptive error message to help
1207 keep people from wasting time tracking an error
1208 that is easily fixed by upgrading.
1210 0.45 Saturday, May 24, 2008
1212 - Because of work in Class::MOP 0.57, all
1213 XS based functionality is now optional
1214 and a Pure Perl version is supplied
1215 - the CLASS_MOP_NO_XS environment variable
1216 can now be used to force non-XS versions
1218 - several of the packages have been tweaked
1219 to take care of this, mostly we added
1220 support for the package_name and name
1221 variables in all the Method metaclasses
1222 - before/around/after method modifiers now
1223 support regexp matching of names
1224 (thanks to Takatoshi Kitano)
1225 - tests added for this
1226 - NOTE: this only works for classes, it
1227 is currently not supported in roles,
1228 but, ... patches welcome
1229 - All usage of Carp::confess have been replaced
1230 by Carp::croak in the "keyword" functions since
1231 the stack trace is usually not helpful
1234 - All usage of Carp::confess have been replaced
1235 by Carp::croak in the "keyword" functions since
1236 the stack trace is usually not helpful
1237 - The 'has' keyword for roles now accepts the
1238 same array ref form that Moose.pm does
1239 (has [qw/foo bar/] => (is => 'rw', ...))
1240 - added test for this
1242 * Moose::Meta::Attribute
1243 - trigger on a ro-attribute is no longer an
1244 error, as it's useful to trigger off of the
1247 * Moose::Meta::Class
1248 - added same 'add_package_symbol' fix as in
1252 - does_role now handles non-Moose classes
1254 - added tests for this
1255 - added the 'add_method_modifier' function
1256 (thanks to Takatoshi Kitano)
1258 * Moose::Util::TypeConstraints
1259 - subtypes of parameterizable types now are
1260 themselves parameterizable types
1262 * Moose::Meta::Method::Constructor
1263 - fixed bug where trigger was not being
1264 called by the inlined immutable
1266 - added test for this (thanks to Caelum)
1268 * Moose::Meta::Role::Application::ToInstance
1269 - now uses the metaclass of the instance
1270 (if possible) to create the anon-class
1271 (thanks Jonathan Rockway)
1273 * Moose::Cookbook::Recipe22
1274 - added the meta-attribute trait recipe
1278 - fixed hash-ordering test bug that was
1279 causing occasional cpantester failures
1280 - renamed the t/000_recipe/*.t tests to be
1281 more descriptive (thanks to Sartak)
1283 0.44 Sat. May 10, 2008
1285 - made make_immutable warning cluck to
1286 show where the error is (thanks mst)
1289 - BUILDALL and DEMOLISHALL now call
1290 ->body when looping through the
1291 methods, to avoid the overloaded
1293 - fixed issue where DEMOLISHALL was
1294 eating the $@ values, and so not
1295 working correctly, it still kind of
1296 eats them, but so does vanilla perl
1297 - added tests for this
1299 * Moose::Cookbook::Recipe7
1300 - added new recipe for immutable
1301 functionality (thanks Dave Rolsky)
1303 * Moose::Cookbook::Recipe9
1304 - added new recipe for builder and
1305 lazy_build (thanks Dave Rolsky)
1307 * Moose::Cookbook::Recipe11
1308 - added new recipe for method aliasing
1309 and exclusion with Roles (thanks Dave Rolsky)
1312 - fixed Win32 test failure (thanks spicyjack)
1314 ~ removed Build.PL and Module::Build compat
1315 since Module::Install has done that.
1317 0.43 Wed. April, 30, 2008
1319 drink more coffee before
1320 doing release engineering
1322 - whoops, forgot to do the smolder tests,
1323 and we broke some of the custom meta-attr
1324 modules. This fixes that.
1326 0.42 Mon. April 28, 2008
1327 - some bad tests slipped by, nothing else
1328 changed in this release (cpantesters++)
1330 - upped the Class::MOP dependency to 0.55
1331 since we have tests which need the C3
1334 0.41 Mon. April 28, 2008
1335 ~~ numerous documentation updates ~~
1337 - Changed all usage of die to Carp::croak for better
1338 error reporting (initial patch by Tod Hagan)
1340 ** IMPORTANT NOTE **
1341 - the make_immutable keyword is now deprecated, don't
1342 use it in any new code and please fix your old code
1343 as well. There will be 2 releases, and then it will
1349 - refactored the way inner and super work to avoid
1350 any method/@ISA cache penalty (nothingmuch)
1352 * Moose::Meta::Class
1353 - fixing &new_object to make sure trigger gets the
1354 coerced value (spotted by Charles Alderman on the
1356 - added test for this
1358 * Moose::Meta::Method::Constructor
1359 - immutable classes which had non-lazy attributes were calling
1360 the default generating sub twice in the constructor. (bug
1361 found by Jesse Luehrs, fixed by Dave Rolsky)
1362 - added tests for this (Dave Rolsky)
1363 - fix typo in initialize_body method (nothingmuch)
1365 * Moose::Meta::Method::Destructor
1366 - fix typo in initialize_body method (nothingmuch)
1368 * Moose::Meta::Method::Overriden
1369 Moose::Meta::Method::Augmented
1370 - moved the logic for these into their own
1371 classes (nothingmuch)
1373 * Moose::Meta::Attribute
1374 - inherited attributes may now be extended without
1375 restriction on the type ('isa', 'does') (Sartak)
1376 - added tests for this (Sartak)
1377 - when an attribute property is malformed (such as lazy without
1378 a default), give the name of the attribute in the error
1380 - added the &applied_traits and &has_applied_traits methods
1381 to allow introspection of traits
1382 - added tests for this
1383 - moved 'trait' and 'metaclass' argument handling to here from
1385 - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
1386 '+foo' syntax) (nothingmuch)
1387 - added tests for this (t0m)
1390 - localize $@ inside DEMOLISHALL to avoid it
1391 eating $@ (found by Ernesto)
1392 - added test for this (thanks to Ernesto)
1394 * Moose::Util::TypeConstraints
1395 - &find_type_constraint now DWIMs when given an
1396 type constraint object or name (nothingmuch)
1397 - &find_or_create_type_constraint superseded with a number of more
1399 - find_or_create_{isa,does}_type_constraint
1400 - find_or_parse_type_constraint
1402 * Moose::Meta::TypeConstraint
1403 Moose::Meta::TypeConstraint::Class
1404 Moose::Meta::TypeConstraint::Role
1405 Moose::Meta::TypeConstraint::Enum
1406 Moose::Meta::TypeConstraint::Union
1407 Moose::Meta::TypeConstraint::Parameterized
1408 - added the &equals method for comparing two type
1409 constraints (nothingmuch)
1410 - added tests for this (nothingmuch)
1412 * Moose::Meta::TypeConstraint
1413 - add the &parents method, which is just an alias to &parent.
1414 Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
1416 * Moose::Meta::TypeConstraint::Class
1417 - added the class attribute for introspection purposes
1419 - added tests for this
1421 * Moose::Meta::TypeConstraint::Enum
1422 Moose::Meta::TypeConstraint::Role
1423 - broke these out into their own classes (nothingmuch)
1425 * Moose::Cookbook::Recipe*
1426 - fixed references to test file locations in the POD
1427 and updated up some text for new Moose features
1431 - Added &resolve_metaclass_alias, a helper function for finding an actual
1432 class for a short name (e.g. in the traits list)
1434 0.40 Fri. March 14, 2008
1435 - I hate Pod::Coverage
1437 0.39 Fri. March 14, 2008
1439 - documenting the use of '+name' with attributes
1440 that come from recently composed roles. It makes
1441 sense, people are using it, and so why not just
1442 officially support it.
1443 - fixing the 'extends' keyword so that it will not
1444 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
1447 - added the perl -Moose=+Class::Name feature to allow
1448 monkeypatching of classes in one liners
1451 - fixing the 'apply_all_roles' keyword so that it will not
1452 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
1454 * Moose::Meta::Class
1455 - added ->create method which now supports roles (thanks to jrockway)
1456 - added tests for this
1457 - added ->create_anon_class which now supports roles and caching of
1458 the results (thanks to jrockway)
1459 - added tests for this
1460 - made ->does_role a little more forgiving when it is
1461 checking a Class::MOP era metaclasses.
1463 * Moose::Meta::Role::Application::ToInstance
1464 - it is now possible to pass extra params to be used when
1465 a role is applied to an the instance (rebless_params)
1466 - added tests for this
1468 * Moose::Util::TypeConstraints
1469 - class_type now accepts an optional second argument for a
1470 custom message. POD anotated accordingly (groditi)
1471 - added tests for this
1472 - it is now possible to make anon-enums by passing 'enum' an
1473 ARRAY ref instead of the $name => @values. Everything else
1475 - added tests for this
1478 - making test for using '+name' on attributes consumed
1479 from a role, it works and makes sense too.
1481 * Moose::Meta::Attribute
1482 - fix handles so that it doesn't return nothing
1483 when the method cannot be found, not sure why
1484 it ever did this originally, this means we now
1485 have slightly better support for AUTOLOADed
1487 - added more delegation tests
1488 - adding ->does method to this so as to better
1489 support traits and their introspection.
1490 - added tests for this
1493 - localizing the Data::Dumper configurations so
1494 that it does not pollute others (RT #33509)
1495 - made ->does a little more forgiving when it is
1496 passed Class::MOP era metaclasses.
1498 0.38 Fri. Feb. 15, 2008
1499 * Moose::Meta::Attribute
1500 - fixed initializer to correctly do
1501 type checking and coercion in the
1503 - added tests for this
1506 - fixed some finicky tests (thanks to konobi)
1508 0.37 Thurs. Feb. 14, 2008
1510 - fixed some details in Moose::init_meta
1511 and its superclass handling (thanks thepler)
1512 - added tests for this (thanks thepler)
1513 - 'has' now dies if you don't pass in name
1515 - added the 'make_immutable' keyword as a shortcut
1518 * Moose::Meta::Class
1519 Moose::Meta::Method::Constructor
1520 Moose::Meta::Attribute
1521 - making (init_arg => undef) work here too
1522 (thanks to nothingmuch)
1524 * Moose::Meta::Attribute
1525 Moose::Meta::Method::Constructor
1526 Moose::Meta::Method::Accessor
1527 - make lazy attributes respect attr initializers (rjbs)
1528 - added tests for this
1530 * Moose::Util::TypeConstraints
1531 Moose::Util::TypeConstraints::OptimizedConstraints
1532 Moose::Meta::TypeConstraints
1533 Moose::Meta::Attribute
1534 Moose::Meta::Method::Constructor
1535 Moose::Meta::Method::Accessor
1536 - making type errors use the
1537 assigned message (thanks to Sartak)
1538 - added tests for this
1540 * Moose::Meta::Method::Destructor
1541 - making sure DESTROY gets inlined properly
1542 with successive DEMOLISH calls (thanks to manito)
1544 * Moose::Meta::Attribute
1545 Moose::Meta::Method::Accessor
1546 - fixed handling of undef with type constraints
1548 - added tests for this
1551 - added &get_all_init_args and &get_all_attribute_values
1552 (thanks to Sartak and nothingmuch)
1554 0.36 Sat. Jan. 26, 2008
1556 Moose::Meta::Attribute
1557 - role type tests now support when roles are
1558 applied to non-Moose classes (found by ash)
1559 - added tests for this (thanks to ash)
1560 - couple extra tests to boost code coverage
1562 * Moose::Meta::Method::Constructor
1563 - improved fix for handling Class::MOP attributes
1564 - added test for this
1566 * Moose::Meta::Class
1567 - handled the add_attribute($attribute_meta_object)
1569 - added test for this
1571 0.35 Tues. Jan. 22, 2008
1572 * Moose::Meta::Method::Constructor
1573 - fix to make sure even Class::MOP attributes
1574 are handled correctly (Thanks to Dave Rolsky)
1575 - added test for this (also Dave Rolsky)
1577 * Moose::Meta::Class
1578 - improved error message on _apply_all_roles,
1579 you should now use Moose::Util::apply_all_roles
1580 and you shouldnt have been using a _ prefixed
1581 method in the first place ;)
1583 0.34 Mon. Jan. 21, 2008
1584 ~~~ more misc. doc. fixes ~~~
1585 ~~ updated copyright dates ~~
1587 Moose is now a postmodern object system :)
1588 - (see the POD for details)
1590 * <<Role System Refactoring>>
1591 - this release contains a major reworking and
1592 cleanup of the role system
1593 - 100% backwards compat.
1594 - Role application now restructured into seperate
1595 classes based on type of applicants
1596 - Role summation (combining of more than one role)
1597 is much cleaner and anon-classes are no longer
1598 used in this process
1599 - new Composite role metaclass
1600 - runtime application of roles to instances
1601 is now more efficient and re-uses generated
1602 classes when applicable
1604 * <<New Role composition features>>
1605 - methods can now be excluded from a given role
1607 - methods can now be aliased to another name (and
1608 still retain the original as well)
1610 * Moose::Util::TypeConstraints::OptimizedConstraints
1611 - added this module (see above)
1613 * Moose::Meta::Class
1614 - fixed the &_process_attribute method to be called
1615 by &add_attribute, so that the API is now correct
1617 * Moose::Meta::Method::Accessor
1618 - fixed bug when passing a list of values to
1619 an accessor would get (incorrectly) ignored.
1620 Thanks to Sartak for finding this ;)
1621 - added tests for this (Sartak again)
1623 * Moose::Meta::Method::Accessor
1624 Moose::Meta::Method::Constructor
1625 Moose::Meta::Attribute
1626 Moose::Meta::TypeConstraint
1627 Moose::Meta::TypeCoercion
1628 - lots of cleanup of such things as:
1630 - type constraint handling
1631 - error handling/messages
1632 (thanks to nothingmuch)
1634 * Moose::Meta::TypeConstraint::Parameterizable
1635 - added this module to support the refactor
1636 in Moose::Meta::TypeConstraint::Parameterized
1638 * Moose::Meta::TypeConstraint::Parameterized
1639 - refactored how these types are handled so they
1640 are more generic and not confined to ArrayRef
1644 - shortened some file names for better VMS support (RT #32381)
1646 0.33 Fri. Dec. 14, 2007
1647 !! Moose now loads 2 x faster !!
1648 !! with new Class::MOP 0.49 !!
1650 ++ new oose.pm module to make command line
1651 Moose-ness easier (see POD docs for more)
1653 * Moose::Meta::Class
1655 - several tweaks to take advantage of the
1656 new method map caching in Class::MOP
1658 * Moose::Meta::TypeConstraint::Parameterized
1659 - allow subtypes of ArrayRef and HashRef to
1660 be used as a container (sartak)
1661 - added tests for this
1662 - basic support for coercion to ArrayRef and
1663 HashRef for containers (sartak)
1664 - added tests for this
1666 * Moose::Meta::TypeCoercion
1667 - coercions will now create subtypes as needed
1668 so you can now add coercions to parameterized
1669 types without having to explictly define them
1670 - added tests for this
1672 * Moose::Meta::Method::Accessor
1673 - allow subclasses to decide whether we need
1674 to copy the value into a new variable (sartak)
1676 0.32 Tues. Dec. 4, 2007
1677 * Moose::Util::TypeConstraints
1678 - fixing how subtype aliases of unions work
1679 they should inherit the parent's coercion
1680 - added tests for this
1681 - you can now define multiple coercions on
1682 a single type at different times instead of
1683 having to do it all in one place
1684 - added tests for this
1686 * Moose::Meta::TypeConstraint
1687 - there is now a default constraint of sub { 1 }
1688 instead of Moose::Util::TypeConstraints setting
1691 * Moose::Meta::TypeCoercion
1692 * Moose::Meta::TypeCoercion::Union
1693 - added the &has_coercion_for_type and
1694 &add_type_coercions methods to support the
1695 new features above (although you cannot add
1696 more type coercions for Union types)
1698 0.31 Mon. Nov. 26, 2007
1699 * Moose::Meta::Attribute
1700 - made the +attr syntax handle extending types with
1701 parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
1702 now works if the original foo is an ArrayRef.
1703 - added tests for this.
1704 - delegation now works even if the attribute does not
1705 have a reader method using the get_read_method_ref
1706 method from Class::MOP::Attribute.
1707 - added tests for this
1708 - added docs for this
1710 * Moose::Util::TypeConstraints
1711 - passing no "additional attribute info" to
1712 &find_or_create_type_constraint will no longer
1713 attempt to create an __ANON__ type for you,
1714 instead it will just return undef.
1715 - added docs for this
1717 0.30 Fri. Nov. 23, 2007
1718 * Moose::Meta::Method::Constructor
1719 -builder related bug in inlined constructor. (groditi)
1721 * Moose::Meta::Method::Accessor
1722 - genereate unnecessary calls to predicates and refactor
1723 code generation for runtime speed (groditi)
1725 * Moose::Util::TypeConstraints
1726 - fix ClassName constraint to introspect symbol table (mst)
1727 - added more tests for this (mst)
1728 - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
1729 with work correctly.
1730 - added tests for this
1733 - adding the link to Recipie 11 (written by Sartak)
1734 - adding test for SYNOPSIS code
1737 - New tests for builder bug. Upon instantiation, if an
1738 attribute had a builder, no value and was not lazy the
1739 builder default was not getting run, oops. (groditi)
1741 0.29 Tues. Nov. 13, 2007
1742 * Moose::Meta::Attribute
1743 - Fix error message on missing builder method (groditi)
1745 * Moose::Meta::Method::Accessor
1746 - Fix error message on missing builder method (groditi)
1749 - Add test to check for the correct error message when
1750 builder method is missing (groditi)
1752 0.28 Tues. Nov. 13, 2007
1753 - 0.27 packaged incorrectly (groditi)
1755 0.27 Tues. Nov. 13, 2007
1756 * Moose::Meta::Attribute
1757 - Added support for the new builder option (groditi)
1758 - Added support for lazy_build option (groditi)
1759 - Changed slot initialization for predicate changes (groditi)
1761 * Moose::Meta::Method::Accessor
1762 - Added support for lazy_build option (groditi)
1763 - Fix inline methods to work with corrected predicate
1766 * Moose::Meta::Method::Constructor
1767 - Added support for lazy_build option (groditi)
1770 - tests for builder and lazy_build (groditi)
1772 * fixing some misc. bits in the docs that
1773 got mentioned on CPAN Forum & perlmonks
1776 - fixed how required methods are handled
1777 when they encounter overriden or modified
1778 methods from a class (thanks to confound).
1779 - added tests for this
1781 * Moose::Util::TypeConstraint
1782 - fixed the type notation parser so that
1783 the | always creates a union and so is
1784 no longer a valid type char (thanks to
1785 konobi, mugwump and #moose for working
1787 - added more tests for this
1789 0.26 Thurs. Sept. 27, 2007
1792 * Parameterized Types
1793 We now support parameterized collection types, such as:
1794 ArrayRef[Int] # array or integers
1795 HashRef[Object] # a hash with object values
1796 They can also be nested:
1797 ArrayRef[HashRef[RegexpRef]] # an array of hashes with regex values
1798 And work with the type unions as well:
1799 ArrayRef[Int | Str] # array of integers of strings
1801 * Better Framework Extendability
1802 Moose.pm is now "extendable" such that it is now much
1803 easier to extend the framework and add your own keywords
1804 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
1805 section of the Moose.pm docs.
1808 In an effort to begin documenting some of the various
1809 details of Moose as well as some common idioms, we have
1810 created Moose::Cookbook::Snacks as a place to find
1811 small (easily digestable) nuggets of Moose code.
1814 ~ Several doc updates/cleanup thanks to castaway ~
1816 - converted build system to use Module::Install instead of
1817 Module::Build (thanks to jrockway)
1820 - added all the meta classes to the immutable list and
1821 set it to inline the accessors
1822 - fix import to allow Sub::Exporter like { into => }
1823 and { into_level => } (perigrin)
1824 - exposed and documented init_meta() to allow better
1825 embedding and extending of Moose (perigrin)
1828 - complete re-organization of the test suite
1829 - added some new tests as well
1830 - finally re-enabled the Moose::POOP test since
1831 the new version of DBM::Deep now works again
1834 * Moose::Meta::Class
1835 - fixed very odd and very nasty recursion bug with
1837 - added tests for this (eilara)
1839 * Moose::Meta::Attribute
1840 Moose::Meta::Method::Constructor
1841 Moose::Meta::Method::Accessor
1842 - fixed issue with overload::Overloaded getting called
1843 on non-blessed items. (RT #29269)
1844 - added tests for this
1846 * Moose::Meta::Method::Accessor
1847 - fixed issue with generated accessor code making
1848 assumptions about hash based classes (thanks to dexter)
1850 * Moose::Coookbook::Snacks
1851 - these are bits of documentation, not quite as big as
1852 Recipes but which have no clear place in the module docs.
1853 So they are Snacks! (horray for castaway++)
1855 * Moose::Cookbook::Recipe4
1856 - updated it to use the new ArrayRef[MyType] construct
1857 - updated the accompanying test as well
1859 +++ Major Refactor of the Type Constraint system +++
1860 +++ with new features added as well +++
1862 * Moose::Util::TypeConstraint
1863 - no longer uses package variable to keep track of
1864 the type constraints, now uses the an instance of
1865 Moose::Meta::TypeConstraint::Registry to do it
1866 - added more sophisticated type notation parsing
1868 - added tests for this
1870 * Moose::Meta::TypeConstraint
1871 - some minor adjustments to make subclassing easier
1872 - added the package_defined_in attribute so that we
1873 can track where the type constraints are created
1875 * Moose::Meta::TypeConstraint::Union
1876 - this is now been refactored to be a subclass of
1877 Moose::Meta::TypeConstraint
1879 * Moose::Meta::TypeCoercion::Union
1880 - this has been added to service the newly refactored
1881 Moose::Meta::TypeConstraint::Union and is itself
1882 a subclass of Moose::Meta::TypeCoercion
1884 * Moose::Meta::TypeConstraint::Parameterized
1885 - added this module (taken from MooseX::AttributeHelpers)
1886 to help construct nested collection types
1887 - added tests for this
1889 * Moose::Meta::TypeConstraint::Registry
1890 - added this class to keep track of type constraints
1892 0.25 Mon. Aug. 13, 2007
1894 - Documentation update to reference Moose::Util::TypeConstraints
1895 under 'isa' in 'has' for how to define a new type
1896 (thanks to shlomif).
1898 * Moose::Meta::Attribute
1899 - required attributes now will no longer accept undef
1900 from the constructor, even if there is a default and lazy
1901 - added tests for this
1902 - default subroutines must return a value which passes the
1904 - added tests for this
1906 * Moose::Meta::Attribute
1907 * Moose::Meta::Method::Constructor
1908 * Moose::Meta::Method::Accessor
1909 - type-constraint tests now handle overloaded objects correctly
1910 in the error message
1911 - added tests for this (thanks to EvanCarroll)
1913 * Moose::Meta::TypeConstraint::Union
1914 - added (has_)hand_optimized_constraint to this class so that
1915 it behaves as the regular Moose::Meta::TypeConstraint does.
1918 - large refactoring of this code
1919 - added several more tests
1920 - tests for subtle conflict resolition issues
1921 added, but not currently running
1924 * Moose::Cookbook::Recipe7
1925 - added new recipe for augment/inner functionality
1927 - added test for this
1930 - a formal definition of roles (still in progress)
1933 - utilities for easier working with Moose classes
1934 - added tests for these
1937 - This contains Moose specific test functions
1938 - added tests for these
1940 0.24 Tues. July 3, 2007
1941 ~ Some doc updates/cleanup ~
1943 * Moose::Meta::Attribute
1944 - added support for roles to be given as parameters
1945 to the 'handles' option.
1946 - added tests and docs for this
1947 - the has '+foo' attribute form now accepts changes to
1948 the lazy option, and the addition of a handles option
1949 (but not changing the handles option)
1950 - added tests and docs for this
1953 - required methods are now fetched using find_method_by_name
1954 so that required methods can come from superclasses
1955 - adjusted tests for this
1957 0.23 Mon. June 18, 2007
1958 * Moose::Meta::Method::Constructor
1959 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
1960 * Moose::Meta::Class
1961 - Modify make_immutable to work with the new Class::MOP immutable
1962 mechanism + POD + very basic test (groditi)
1963 * Moose::Meta::Attribute
1964 - Fix handles to use goto() so that caller() comes out properly on
1965 the other side (perigrin)
1967 0.22 Thurs. May 31, 2007
1968 * Moose::Util::TypeConstraints
1969 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
1970 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
1971 prototypes for functions
1972 - added the ClassName type constraint, this checks for strings
1973 which will respond true to ->isa(UNIVERSAL).
1974 - added tests and docs for this
1975 - subtyping just in name now works correctly by making the
1976 default for where be { 1 }
1977 - added test for this
1979 * Moose::Meta::Method::Accessor
1980 - coerce and lazy now work together correctly, thanks to
1981 merlyn for finding this bug
1982 - tests added for this
1983 - fix reader presedence bug in Moose::Meta::Attribute + tests
1986 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
1987 a HASH-ref and missed. This produces better error messages then
1988 having it die cause undef is not a HASH.
1989 - added tests for this
1991 0.21 Thursday, May 2nd, 2007
1993 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
1994 - modified unimport to remove super and inner along with the rest
1995 - altered unimport tests to handle this
1998 - altered super export to populate SUPER_SLOT
2000 * Moose::Meta::Class
2001 - altered augment and override modifier application to use *_SLOT
2002 - modified tests for these to unimport one test class each to test
2005 - fixed issue where custom attribute metaclasses
2006 where not handled correctly in roles
2007 - added tests for this
2009 * Moose::Meta::Class
2010 - fixed issue where extending metaclasses with
2011 roles would blow up. Thanks to Aankhen`` for
2012 finding this insidious error, and it's solution.
2014 ~~ lots of spelling and grammer fixes in the docs,
2015 many many thanks to rlb3 and Aankhen for these :)
2017 0.20 Friday, April 6th, 2007
2018 >> I messed up the SKIP logic in one test
2019 so this release is just to fix that.
2022 - 'has' now also accepts an ARRAY ref
2023 to create multiple attrs (see docs)
2024 (thanks to konobi for this)
2025 - added tests and docs
2027 0.19 Thurs. April 5th, 2007
2028 ~~ More documentation updates ~~
2030 * Moose::Util::TypeConstraints
2031 - 'type' now supports messages as well
2032 thanks to phaylon for finding this
2033 - added tests for this
2034 - added &list_all_type_constraints and
2035 &list_all_builtin_type_constraints
2036 functions to facilitate introspection.
2038 * Moose::Meta::Attribute
2039 - fixed regexp 'handles' declarations
2040 to build the list of delegated methods
2041 correctly (and not override important
2042 things like &new) thanks to ashleyb
2044 - added tests and docs for this
2045 - added the 'documentation' attributes
2046 so that you can actually document your
2047 attributes and inspect them through the
2049 - added tests and docs for this
2051 * Moose::Meta::Class
2052 - when loading custom attribute metaclasses
2053 it will first look in for the class in the
2054 Moose::Meta::Attribute::Custom::$name, and
2055 then default to just loading $name.
2056 - added tests and docs for this
2058 * Moose::Meta::TypeConstraint
2059 - type constraints now stringify to their names.
2060 - added test for this
2063 - added tests to assure we work with Module::Refresh
2064 - added stricter test skip logic in the Moose POOP
2065 test, ask Rob Kinyon why.
2066 - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
2068 0.18 Sat. March 10, 2007
2069 ~~ Many, many documentation updates ~~
2072 - We now use Class::MOP::load_class to
2074 - added tests to show types and subtypes
2075 working with Declare::Constraints::Simple
2076 and Test::Deep as constraint engines.
2079 !! You must have Class::MOP 0.37_001 !!
2080 !! for this developer release to work !!
2082 This release was primarily adding the immutable
2083 feature to Moose. An immutable class is one which
2084 you promise not to alter. When you set the class
2085 as immutable it will perform various bits of
2086 memoization and inline certain part of the code
2087 (constructors, destructors and accessors). This
2088 minimizes (and in some cases totally eliminates)
2089 one of Moose's biggest performance hits. This
2090 feature is not on by default, and is 100% optional.
2091 It has several configurable bits as well, so you
2092 can pick and choose to your specific needs.
2094 The changes involved in this were fairly wide and
2095 highly specific, but 100% backwards compatible, so
2096 I am not going to enumerate them here. If you are
2097 truely interested in what was changed, please do
2100 0.17 Tues. Nov. 14, 2006
2101 * Moose::Meta::Method::Accessor
2102 - bugfix for read-only accessors which
2103 are have a type constraint and lazy.
2104 Thanks to chansen for finding it.
2106 0.16 Tues. Nov. 14, 2006
2108 There are some speed improvements in this release,
2109 but they are only the begining, so stay tuned.
2112 - BUILDALL and DEMOLISHALL no longer get
2113 called unless they actually need to be.
2114 This gave us a signifigant speed boost
2115 for the cases when there is no BUILD or
2116 DEMOLISH method present.
2118 * Moose::Util::TypeConstraints
2119 * Moose::Meta::TypeConstraint
2120 - added an 'optimize_as' option to the
2121 type constraint, which allows for a
2122 hand optimized version of the type
2123 constraint to be used when possible.
2124 - Any internally created type constraints
2125 now provide an optimized version as well.
2127 0.15 Sun. Nov. 5, 2006
2129 This version of Moose *must* have Class::MOP 0.36 in order
2130 to work correctly. A number of small internal tweaks have
2131 been made in order to be compatible with that release.
2133 * Moose::Util::TypeConstraints
2134 - added &unimport so that you can clean out
2135 your class namespace of these exported
2138 * Moose::Meta::Class
2139 - fixed minor issue which occasionally
2140 comes up during global destruction
2142 - moved Moose::Meta::Method::Overriden into
2146 - moved Moose::Meta::Role::Method into
2149 * Moose::Meta::Attribute
2150 - changed how we do type checks so that
2151 we reduce the overall cost, but still
2154 - moved accessor generation methods to
2155 Moose::Meta::Method::Accessor to
2156 conform to the API changes from
2159 * Moose::Meta::TypeConstraint
2160 - changed how constraints are compiled
2161 so that we do less recursion and more
2162 iteration. This makes the type check
2164 - moved Moose::Meta::TypeConstraint::Union
2167 * Moose::Meta::Method::Accessor
2168 - created this from methods formerly found in
2169 Moose::Meta::Attribute
2171 * Moose::Meta::Role::Method
2172 - moved this from Moose::Meta::Role
2174 * Moose::Meta::Method::Overriden
2175 - moved this from Moose::Meta::Class
2177 * Moose::Meta::TypeConstraint::Union
2178 - moved this from Moose::Meta::TypeConstraint
2180 0.14 Mon. Oct. 9, 2006
2182 * Moose::Meta::Attribute
2183 - fixed lazy attributes which were not getting
2184 checked with the type constraint (thanks ashley)
2185 - added tests for this
2186 - removed the over-enthusiastic DWIMery of the
2187 automatic ArrayRef and HashRef defaults, it
2188 broke predicates in an ugly way.
2189 - removed tests for this
2191 0.13 Sat. Sept. 30, 2006
2193 This version of Moose *must* have Class::MOP 0.35 in order
2194 to work correctly. A number of small internal tweaks have
2195 been made in order to be compatible with that release.
2198 - Removed the use of UNIVERSAL::require to be a better
2199 symbol table citizen and remove a dependency
2200 (thanks Adam Kennedy)
2202 **~~ removed experimental & undocumented feature ~~**
2203 - commented out the 'method' and 'self' keywords, see the
2204 comments for more info.
2207 - added a FAQ and WTF files to document frequently
2208 asked questions and common problems
2210 * Moose::Util::TypeConstraints
2211 - added GlobRef and FileHandle type constraint
2212 - added tests for this
2214 * Moose::Meta::Attribute
2215 - if your attribute 'isa' ArrayRef of HashRef, and you have
2216 not explicitly set a default, then make the default DWIM.
2217 This will also work for subtypes of ArrayRef and HashRef
2219 - you can now auto-deref subtypes of ArrayRef or HashRef too.
2220 - new test added for this (thanks to ashley)
2223 - added basic support for runtime role composition
2224 but this is still *highly experimental*, so feedback
2225 is much appreciated :)
2226 - added tests for this
2228 * Moose::Meta::TypeConstraint
2229 - the type constraint now handles the coercion process
2230 through delegation, this is to support the coercion
2233 * Moose::Meta::TypeConstraint::Union
2234 - it is now possible for coercions to be performed
2236 - added tests for this (thanks to konobi)
2238 * Moose::Meta::TypeCoercion
2239 - properly capturing error when type constraint
2243 - Scalar::Util 1.18 is bad on Win32, so temporarily
2244 only require version 1.17 for Win32 and cygwin.
2245 (thanks Adam Kennedy)
2247 0.12 Sat. Sept. 1, 2006
2249 - Recipe5 (subtypes & coercion) has been written
2252 - fixed "bad meta" error message to be more descriptive
2253 - fixed &unimport to not remove the &inner and &super
2254 keywords because we need to localize them.
2255 - fixed number of spelling/grammer issues, thanks Theory :)
2257 **~~ experimental & undocumented feature ~~**
2258 - added the method and self keywords, they are basically
2259 just sugar, and they may not stay around.
2262 - added &dump method to easily Data::Dumper
2265 * Moose::Meta::TypeConstraint
2266 - added the &is_a_type_of method to check both the current
2267 and the subtype of a method (similar to &isa with classes)
2270 - this is now a subclass of Class::MOP::Module, and no longer
2271 creates the _role_meta ugliness of before.
2272 - fixed tests to reflect this change
2274 0.11 Wed. July 12, 2006
2276 - added an &unimport method to remove all the keywords
2277 that Moose will import, simply add 'no Moose' to the
2278 bottom of your class file.
2281 - fixed some test failures caused by a forgotten test
2284 0.10 Thurs. July 6, 2006
2286 - improved error message when loading modules so
2287 it is less confusing when you load a role.
2288 - added &calculate_all_roles method to
2289 Moose::Meta::Class and Moose::Meta::Role
2292 This module has been tested against Class::MOP 0.30
2293 but it does not yet utilize the optimizations
2294 it makes available. Stay tuned for that ;)
2296 0.09_03 Fri. June 23, 2006
2297 ++ DEVELOPER RELEASE ++
2299 - 'use strict' and 'use warnings' are no longer
2300 needed in Moose classes, Moose itself will
2301 turn them on for you.
2302 - added tests for this
2303 - moved code from exported subs to private methods
2304 in Moose::Meta::Class
2307 - as with Moose, strict and warnings are
2308 automatically turned on for you.
2309 - added tests for this
2312 - now handles an edge case for override errors
2313 - added tests for this
2314 - added some more edge case tests
2316 0.09_02 Tues. May 16, 2006
2317 ++ DEVELOPER RELEASE ++
2319 - added prototypes to the exported subs
2323 - added prototypes to the exported subs
2326 * Moose::Util::TypeConstraints
2327 - cleaned up prototypes for the subs
2330 0.09_01 Fri. May 12, 2006
2331 ++ DEVELOPER RELEASE ++
2332 - This release works in combination with
2333 Class::MOP 0.29_01, it is a developer
2334 release because it uses the a new
2335 instance sub-protocol and a fairly
2336 complete Role implementation. It has
2337 not yet been optimized, so it slower
2338 the the previous CPAN version. This
2339 release also lacks good updated docs,
2340 the official release will have updated docs.
2343 - refactored the keyword exports
2344 - 'with' now checks Role validaity and
2345 accepts more than one Role at a time
2346 - 'extends' makes metaclass adjustments as
2347 needed to ensure metaclass compatibility
2350 - refactored the keyword exports
2351 - 'with' now checks Role validaity and
2352 accepts more than one Role at a time
2354 * Moose::Util::TypeConstraints
2355 - added the 'enum' keyword for simple
2356 string enumerations which can be used as
2358 - see example of usage in t/202_example.t
2361 - more careful checking of params to new()
2364 - much work done on the role composition
2365 - many new tests for conflict detection
2366 and composition edge cases
2367 - not enough documentation, I suggest
2368 looking at the tests
2370 * Moose::Meta::Instance
2371 - added new Instance metaclass to support
2372 the new Class::MOP instance protocol
2374 * Moose::Meta::Class
2375 - some small changes to support the new
2377 - some small additions to support Roles
2379 * Moose::Meta::Attribute
2380 - some improvements to the accessor generation code
2382 - some small changes to support the new
2384 - (still somewhat) experimental delegation support
2385 with the 'handles' option
2386 - added several tests for this
2387 - no docs for this yet
2389 0.05 Thurs. April 27, 2006
2391 - keywords are now exported with Sub::Exporter
2392 thanks to chansen for this commit
2393 - has keyword now takes a 'metaclass' option
2394 to support custom attribute meta-classes
2395 on a per-attribute basis
2396 - added tests for this
2397 - the 'has' keyword not accepts inherited slot
2398 specifications (has '+foo'). This is still an
2399 experimental feature and probably not finished
2400 see t/038_attribute_inherited_slot_specs.t for
2401 more details, or ask about it on #moose
2402 - added tests for this
2405 - keywords are now exported with Sub::Exporter
2407 * Moose::Utils::TypeConstraints
2408 - reorganized the type constraint hierarchy, thanks
2409 to nothingmuch and chansen for his help and advice
2411 - added some tests for this
2412 - keywords are now exported with Sub::Exporter
2413 thanks to chansen for this commit
2415 * Moose::Meta::Class
2416 - due to changes in Class::MOP, we had to change
2417 construct_instance (for the better)
2419 * Moose::Meta::Attribute
2420 - due to changes in Class::MOP, we had to add the
2421 initialize_instance_slot method (it's a good thing)
2423 * Moose::Meta::TypeConstraint
2424 - added type constraint unions
2425 - added tests for this
2426 - added the is_subtype_of predicate method
2427 - added tests for this
2429 0.04 Sun. April 16th, 2006
2431 - Roles can now consume other roles
2432 - added tests for this
2433 - Roles can specify required methods now with
2434 the requires() keyword
2435 - added tests for this
2438 - ripped out much of it's guts ,.. much cleaner now
2439 - added required methods and correct handling of
2440 them in apply() for both classes and roles
2441 - added tests for this
2442 - no longer adds a does() method to consuming classes
2443 it relys on the one in Moose::Object
2444 - added roles attribute and some methods to support
2445 roles consuming roles
2447 * Moose::Meta::Attribute
2448 - added support for triggers on attributes
2449 - added tests for this
2450 - added support for does option on an attribute
2451 - added tests for this
2453 * Moose::Meta::Class
2454 - added support for attribute triggers in the
2456 - added tests for this
2459 - Moose no longer creates a subtype for your class
2460 if a subtype of the same name already exists, this
2461 should DWIM in 99.9999% of all cases
2463 * Moose::Util::TypeConstraints
2464 - fixed bug where incorrect subtype conflicts were
2466 - added test for this
2469 - this class can now be extended with 'use base' if
2470 you need it, it properly loads the metaclass class now
2471 - added test for this
2473 0.03_02 Wed. April 12, 2006
2475 - you must now explictly use Moose::Util::TypeConstraints
2476 it no longer gets exported for you automatically
2479 - new() now accepts hash-refs as well as key/value lists
2480 - added does() method to check for Roles
2481 - added tests for this
2483 * Moose::Meta::Class
2484 - added roles attribute along with the add_role() and
2486 - added tests for this
2489 - now adds a does() method to consuming classes
2490 which tests the class's hierarchy for roles
2491 - added tests for this
2493 0.03_01 Mon. April 10, 2006
2495 - added new Role recipe (no content yet, only code)
2498 - added 'with' keyword for Role support
2499 - added test and docs for this
2500 - fixed subtype quoting bug
2501 - added test for this
2505 - added test and docs
2507 * Moose::Util::TypeConstraints
2508 - added the message keyword to add custom
2509 error messages to type constraints
2512 - the meta role to support Moose::Role
2513 - added tests and docs
2515 * Moose::Meta::Class
2516 - moved a number of things from Moose.pm
2517 to here, they should have been here
2520 * Moose::Meta::Attribute
2521 - moved the attribute option macros here
2522 instead of putting them in Moose.pm
2524 * Moose::Meta::TypeConstraint
2525 - added the message attributes and the
2527 - added tests and docs for this
2529 0.03 Thurs. March 30, 2006
2531 - added the Moose::Cookbook with 5 recipes,
2532 describing all the stuff Moose can do.
2535 - fixed an issue with &extends super class loading
2536 it now captures errors and deals with inline
2537 packages correctly (bug found by mst, solution
2539 - added super/override & inner/augment features
2540 - added tests and docs for these
2543 - BUILDALL now takes a reference of the %params
2544 that are passed to &new, and passes that to
2547 * Moose::Util::TypeConstraints
2548 - Type constraints now survive runtime reloading
2549 - added test for this
2551 * Moose::Meta::Class
2552 - fixed the way attribute defaults are handled
2553 during instance construction (bug found by chansen)
2555 * Moose::Meta::Attribute
2556 - read-only attributes now actually enforce their
2557 read-only-ness (this corrected in Class::MOP as
2560 0.02 Tues. March 21, 2006
2562 - many more tests, fixing some bugs and
2564 - &extends now loads the base module with
2566 - added UNIVERSAL::require to the
2569 - each new Moose class will also create
2570 and register a subtype of Object which
2571 correspond to the new Moose class.
2572 - the 'isa' option in &has now only
2573 accepts strings, and will DWIM in
2576 * Moose::Util::TypeConstraints
2577 - added type coercion features
2578 - added tests for this
2579 - added support for this in attributes
2580 and instance construction
2582 - type construction no longer creates a
2583 function, it registers the type instead.
2584 - added several functions to get the
2588 - BUILDALL and DEMOLISHALL were broken
2589 because of a mis-named hash key, Whoops :)
2591 * Moose::Meta::Attribute
2592 - adding support for coercion in the
2593 autogenerated accessors
2595 * Moose::Meta::Class
2596 - adding support for coercion in the
2597 instance construction
2599 * Moose::Meta::TypeConstraint
2600 * Moose::Meta::TypeCoercion
2601 - type constraints and coercions are now
2602 full fledges meta-objects
2604 0.01 Wed. March 15, 2006
2605 - Moooooooooooooooooose!!!