1 Revision history for Perl extension Moose
4 * Moose::Util::TypeConstraints
5 - Calling subtype with a name as the only argument is now an
6 exception. If you want an anonymous subtype do:
8 my $subtype = subtype as 'Foo';
10 * Moose::Cookbook::Meta::Recipe7
11 - A new recipe, creating a custom meta-instance class.
13 * Moose::Cookbook::Basics::Recipe5
14 - Fix POD formatting typo
16 * Moose::Cookbook::Basics::Recipe9
17 - Link to this recipe from Moose.pm's builder blurb
19 * Moose::Meta::Method::Constructor
20 - Make it easier to subclass the inlining behaviour
22 0.72 Mon, February 23, 2009
24 * Moose::Meta::Method::Constructor
25 - A mutable class accepted Foo->new(undef) without complaint,
26 while an immutable class would blow up with an unhelpful
27 error. Now, in both cases we throw a helpful error
28 instead. Reported by doy.
30 0.71_01 Sun, February 22, 2009
32 - Hopefully fixed some POD errors in a few recipes that caused
33 them to display weird on search.cpan.org.
35 * Moose::Util::TypeConstraints
36 - Calling type or subtype without the sugar helpers (as, where,
37 message) is now deprecated.
38 - The subtype function tried hard to guess what you meant, but
39 often got it wrong. For example:
41 my $subtype = subtype as 'ArrayRef[Object]';
43 This caused an error in the past, but now works as you'd
47 - Make sure Moose.pm is loaded before calling
48 Moose->throw_error. This wasn't normally an issue, but could
49 bite you in weird cases.
51 0.71 Thu, February 19, 2009
52 * Moose::Cookbook::Basics::Recipe11
53 - A new recipe which demonstrates the use of BUILDARGS and
56 * Moose::Cookbook::Roles::Recipe3
57 - A new recipe, applying a role to an object instance. (Dave
61 - Allow overriding specific keywords from "also" packages. (doy)
64 - Replace hardcoded cookbook tests with Test::Inline to ensure
65 the tests match the actual code in the recipes. (Dave Rolsky)
68 - Working on the above turned up a number of little bugs in the
69 recipe code. (Dave Rolsky)
71 * Moose::Util::TypeConstraints::Optimized
72 - Just use Class::MOP for the optimized ClassName check. (Dave
75 0.70 Sat, February 14, 2009
76 * Moose::Util::TypeConstraints
77 - Added the RoleName type (stevan)
78 - added tests for this (stevan)
80 * Moose::Cookbook::Basics::Recipe3
81 - Updated the before qw[left right] sub to be a little more
82 defensive about what it accepts (stevan)
83 - added more tests to t/000_recipies/basics/003_binary_tree.t
87 - We now always call DEMOLISHALL, even if a class does not
88 define DEMOLISH. This makes sure that method modifiers on
89 DEMOLISHALL work as expected. (doy)
90 - added tests for this (EvanCarroll)
92 * Moose::Util::MetaRole
93 - Accept roles for the wrapped_method_metaclass (rafl)
94 - added tests for this (rafl)
96 * Moose::Meta::Attribute
97 - We no longer pass the meta-attribute object as a final
98 argument to triggers. This actually changed for inlined code a
99 while back, but the non-inlined version and the docs were
103 - Some tests tried to use Test::Warn 0.10, which had bugs. Now
104 they require 0.11. (Dave Rolsky)
107 - Lots of small changes to the manual, cookbook, and
108 elsewhere. These were based on feedback from various
109 users, too many to list here. (Dave Rolsky)
111 0.69 Thu, February 12, 2009
113 - Make some keyword errors use throw_error instead of croak
114 since Moose::Exporter wraps keywords now (Sartak)
117 - Revised every recipe for style and clarity. Also moved some
118 documentation out of cookbook recipes and into Moose::Manual
119 pages. This work was funded as part of the Moose docs grant
120 from TPF. (Dave Rolsky)
122 * Moose::Meta::Method::Delegation
123 - If the attribute doing the delegation was not populated, the
124 error message did not specify the attribute name
127 0.68 Wed, February 4, 2009
129 - Many spelling, typo, and formatting fixes by daxim.
131 * Moose::Manual::Attributes
132 - The NAME section in the POD used "Attribute" so search.cpan
133 didn't resolve links from other documents properly.
135 * Moose::Meta::Method::Overriden
136 - Now properly spelled as Overridden. Thanks to daxim for
139 0.67 Tue, February 3, 2009
141 - Lots of little typo fixes and a few clarifications. Several
142 pages didn't have proper titles, and so weren't actually
143 visible on search.cpan.org. Thanks to hanekomu for a variety
144 of fixes and formatting improvements.
146 0.66 Tue, February 3, 2009
148 - This is a brand new, extensive manual for Moose. This aims to
149 provide a complete introduction to all of Moose's
150 features. This work was funded as part of the Moose docs grant
151 from TPF. (Dave Rolsky)
153 * Moose::Meta::Attribute
154 - Added a delegation_metaclass method to replace a hard-coded
155 use of Moose::Meta::Method::Delegation. (Dave Rolsky)
157 * Moose::Util::TypeConstraints
158 - If you created a subtype and passed a parent that Moose didn't
159 know about, it simply ignored the parent. Now it automatically
160 creates the parent as a class type. This may not be what you
161 want, but is less broken than before. (Dave Rolsky)
163 * Moose::Util::TypeConstraints
164 - This module tried throw errors by calling Moose->throw_error,
165 but it did not ensure that Moose was loaded first. This could
166 cause very unhelpful errors when it tried to throw an error
167 before Moose was loaded. (Dave Rolsky)
169 * Moose::Util::TypeConstraints
170 - You could declare a name with subtype such as "Foo!Bar" that
171 would be allowed, but if you used it in a parameterized type
172 such as "ArrayRef[Foo!Bar]" it wouldn't work. We now do some
173 vetting on names created via the sugar functions, so that they
174 can only contain alphanumerics, ":", and ".". (Dave Rolsky)
176 0.65 Thu, January 22, 2008
177 * Moose and Moose::Meta::Method::Overridden
178 - If an overridden method called super(), and then the
179 superclass's method (not overridden) _also_ called super(),
180 Moose went into an endless recursion loop. Test provided by
181 Chris Prather. (Dave Rolsky)
183 * Moose::Meta::TypeConstraint
184 - All methods are now documented. (gphat)
186 * t/100_bugs/011_DEMOLISH_eats_exceptions.t
187 - Fixed some bogus failures that occurred because we tried to
188 validate filesystem paths in a very ad-hoc and
189 not-quite-correct way. (Dave Rolsky)
191 * Moose::Util::TypeConstraints
192 - Added maybe_type to exports. See docs for details. (rjbs)
195 - Added Moose::Util::TypeConstraints to the SEE ALSO
199 - Methods created via an attribute can now fulfill a "requires"
200 declaration for a role. (nothingmuch)
202 * Moose::Meta::Method::*
203 - Stack traces from inlined code will now report its line and
204 file as being in your class, as opposed to in Moose
207 0.64 Wed, December 31, 2008
208 * Moose::Meta::Method::Accessor
209 - Always inline predicate and clearer methods (Sartak)
211 * Moose::Meta::Attribute
212 - Support for parameterized traits (Sartak)
213 - verify_against_type_constraint method to avoid duplication
214 and enhance extensibility (Sartak)
217 - Tests (but no support yet) for parameterized traits (Sartak)
220 - Require Class::MOP 0.75+, which has the side effect of making
221 sure we work on Win32. (Dave Rolsky)
223 0.63 Mon, December 8, 2008
225 - Some small grammar tweaks and bug fixes in non-Moose example
228 0.62_02 Fri, December 5, 2008
229 * Moose::Meta::Role::Application::ToClass
230 - When a class does not provide all of a role's required
231 methods, the error thrown now mentions all of the missing
232 methods, as opposed to just the first one found. Requested by
233 Curtis Poe (RT #41119). (Dave Rolsky)
235 * Moose::Meta::Method::Constructor
236 - Moose will no longer inline a constructor for your class
237 unless it inherits its constructor from Moose::Object, and
238 will warn when it doesn't inline. If you want to force
239 inlining anyway, pass "replace_constructor => 1" to
240 make_immutable. Addresses RT #40968, reported by Jon
241 Swartz. (Dave Rolsky)
242 - The quoting of default values could be broken if the default
243 contained a single quote ('). Now we use quotemeta to escape
244 anything potentially dangerous in the defaults. (Dave Rolsky)
246 0.62_01 Wed, December 3, 2008
248 - use the method->execute API for BUILDALL
249 and DEMOLISHALL (Sartak)
251 * Moose::Util::TypeConstraints
252 - We now make all the type constraint meta classes immutable
253 before creating the default types provided by Moose. This
254 should make loading Moose a little faster. (Dave Rolsky)
256 0.62 Wed November 26, 2008
257 * Moose::Meta::Role::Application::ToClass
258 Moose::Meta::Role::Application::ToRole
259 - fixed issues where excluding and aliasing the
260 same methods for a single role did not work
261 right (worked just fine with multiple
263 - added test for this (stevan)
265 * Moose::Meta::Role::Application::RoleSummation
266 - fixed the error message when trying to compose
267 a role with a role it excludes (Sartak)
270 - Catch another case where recursion caused the value
271 of $CALLER to be stamped on (t0m)
272 - added test for this (t0m)
275 - Remove the make_immutable keyword, which has been
276 deprecated since April. It breaks metaclasses that
277 use Moose without no Moose (Sartak)
279 * Moose::Meta::Attribute
280 - Removing an attribute from a class now also removes delegation
281 (handles) methods installed for that attribute (t0m)
282 - added test for this (t0m)
284 * Moose::Meta::Method::Constructor
285 - An attribute with a default that looked like a number (but was
286 really a string) would accidentally be treated as a number
287 when the constructor was made immutable (perigrin)
288 - added test for this (perigrin)
291 - create method for constructing a role
293 - added test for this (Sartak)
294 - anonymous roles! (Sartak)
295 - added test for this (Sartak)
298 - more consistent error messages (Sartak)
300 * Moose::Cookbook::Roles::Recipe1
301 - attempt to explain why a role that just requires
302 methods is useful (Sartak)
304 0.61 Fri November 7, 2008
305 * Moose::Meta::Attribute
306 - When passing a role to handles, it will be loaded if necessary
310 - Method objects returned by get_method (and other methods)
311 Could end up being returned without an associated_metaclass
312 attribute. Removing get_method_map, which is provided by
313 Class::MOP::Class, fixed this. The Moose version did nothing
314 different from its parent except introduce a bug. (Dave Rolsky)
315 - added tests for this (jdv79)
318 - Added a $VERSION to all .pm files which didn't have one. Fixes
319 RT #40049, reported by Adam Kennedy. (Dave Rolsky)
321 * Moose::Cookbook::Basics::Recipe4
322 * Moose::Cookbook::Basics::Recipe6
323 - These files had spaces on the first line of the SYNOPSIS, as
324 opposed to a totally empty line. According to RT #40432, this
325 confuses POD parsers. (Dave Rolsky)
327 0.60 Fri October 24, 2008
329 - Passing "-traits" when loading Moose caused the Moose.pm
330 exports to be broken. Reported by t0m. (Dave Rolsky)
331 - Tests for this bug. (t0m)
334 - Change resolve_metaclass alias to use the new
335 load_first_existing_class function. This makes it a lot
336 simpler, and also around 5 times faster. (t0m)
337 - Add caching to resolve_metaclass_alias, which gives an order
338 of magnitude speedup to things which repeatedly call the
339 Moose::Meta::Attribute->does method, notably MooseX::Storage
342 * Moose::Util::TypeConstraint
343 - Put back the changes for parameterized constraints that
344 shouldn't have been removed in 0.59. We still cannot parse
345 them, but MooseX modules can create them in some other
346 way. See the 0.58 changes for more details. (jnapiorkowski)
347 - Changed the way subtypes are created so that the job is
348 delegated to a type constraint parent. This clears up some
349 hardcoded checking and should allow correct subtypes of
350 Moose::Meta::Type::Constraint. Don't rely on this new API too
351 much (create_child_type) because it may go away in the
352 future. (jnapiorkowski)
354 * Moose::Meta::TypeConstraint::Union
355 - Type constraint names are sorted as strings, not numbers.
358 * Moose::Meta::TypeConstraint::Parameterizable
359 - New parameterize method. This can be used as a factory method
360 to make a new type constraint with a given parameterized
361 type. (jnapiorkowski)
362 - added tests (jnapiorkowski)
364 0.59 Tue October 14, 2008
366 - Add abridged documentation for builder/default/initializer/
367 predicate, and link to more details sections in
368 Class::MOP::Attribute. (t0m)
370 * Moose::Util::TypeConstraints
371 - removed prototypes from all but the &-based stuff (mst)
373 * Moose::Util::TypeConstraints
374 - Creating a anonymous subtype with both a constraint and a
375 message failed with a very unhelpful error, but should just
376 work. Reported by t0m. (Dave Rolsky)
379 - Some tests that used Test::Warn if it was available failed
380 with older versions of Test::Warn. Reported by Fayland. (Dave
382 - Test firing behavior of triggers in relation to builder/default/
384 - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
385 kinds of supported type. (t0m)
388 - In create(), do not pass "roles" option to the superclass
389 - added related test that creates an anon metaclass with
392 * Moose::Meta::TypeConstraint::Class
393 * Moose::Meta::TypeConstraint::Role
394 - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
395 other types (as per change in 0.55_02). (t0m)
397 * Moose::Meta::TypeConstraint::Registry
398 - Fix warning when dealing with unknown type names (t0m)
400 * Moose::Util::TypeConstraints
401 - Reverted changes from 0.58 related to handle parameterized
402 types. This caused random failures on BSD and Win32 systems,
403 apparently related to the regex engine. This means that Moose
404 can no longer parse structured type constraints like
405 ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
406 supported in a slightly different way via MooseX::Types some
407 time in the future. (Dave Rolsky)
409 0.58 Sat September 20, 2008
410 !! This release has an incompatible change regarding !!
411 !! how roles add methods to a class !!
413 * Roles and role application
414 ! Roles now add methods by calling add_method, not
415 alias_method. They make sure to always provide a method
416 object, which will be cloned internally. This means that it is
417 now possible to track the source of a method provided by a
418 role, and even follow its history through intermediate roles.
420 This means that methods added by a role now show up when
421 looking at a class's method list/map. (Dave Rolsky)
424 - From this release on, we'll try to maintain a list of
425 conflicting modules, and warn you if you have one
426 installed. For example, this release conflicts with ...
427 - MooseX::Singleton <= 0.11
428 - MooseX::Params::Validate <= 0.05
431 In general, we try to not break backwards compatibility for
432 most Moose users, but MooseX modules and other code which
433 extends Moose's metaclasses is often affected by very small
434 changes in the Moose internals.
436 * Moose::Meta::Method::Delegation
437 * Moose::Meta::Attribute
438 - Delegation methods now have their own method class. (Dave
441 * Moose::Meta::TypeConstraint::Parameterizable
442 - Added a new method 'parameterize' which is basically a factory
443 for the containing constraint. This makes it easier to create
444 new types of parameterized constraints. (jnapiorkowski)
446 * Moose::Meta::TypeConstraint::Union
447 - Changed the way Union types canonicalize their names to follow
448 the normalized TC naming rules, which means we strip all
449 whitespace. (jnapiorkowski)
451 * Moose::Util::TypeConstraints
452 - Parameter and Union args are now sorted, this makes Int|Str
453 the same constraint as Str|Int. (jnapiorkowski)
454 - Changes to the way Union types are parsed to more correctly
455 stringify their names. (jnapiorkowski)
456 - When creating a parameterized type, we now use the new
457 parameterize method. (jnapiorkowski)
458 - Incoming type constraint strings are now normalized to remove
459 all whitespace differences. (jnapiorkowski)
460 - Changed the way we parse type constraint strings so that we now
461 match TC[Int,Int,...] and TC[name=>Str] as parameterized type
462 constraints. This lays the foundation for more flexible type
463 constraint implementations.
465 * Tests and docs for all the above. (jnapiorkowski)
469 - Moose::Exporter will no longer remove a subroutine that the
470 exporting package re-exports. Moose re-exports the
471 Carp::confess function, among others. The reasoning is that we
472 cannot know whether you have also explicitly imported those
473 functions for your own use, so we err on the safe side and
474 always keep them. (Dave Rolsky)
475 - added tests for this (rafl)
478 - Changes to how we fix metaclass compatibility that are much
479 too complicated to go into. The summary is that Moose is much
480 less likely to complain about metaclass incompatibility
481 now. In particular, if two metaclasses differ because
482 Moose::Util::MetaRole was used on the two corresponding
483 classes, then the difference in roles is reconciled for the
484 subclass's metaclass. (Dave Rolsky)
485 - Squashed an warning in _process_attribute (thepler)
488 - throw exceptions (sooner) for invalid attribute names (thepler)
489 - added tests for this (thepler)
491 * Moose::Util::MetaRole
492 - If you explicitly set a constructor or destructor class for a
493 metaclass object, and then applied roles to the metaclass,
494 that explicitly set class would be lost and replaced with the
498 * Moose::Meta::Attribute
499 * Moose::Meta::Method
502 * Moose::Error::Default
503 * Moose::Error::Croak
504 * Moose::Error::Confess
505 - All instances of confess() changed to use overridable
506 C<throw_error> method. This method ultimately calls a class
507 constructor, and you can change the class being called. In
508 addition, errors now pass more information than just a string.
509 The default C<error_class> behaves like C<Carp::confess>, so
510 the behavior is not visibly different for end users.
512 0.57 Wed September 3, 2008
514 - A new bit of doc intended to introduce folks familiar with
515 "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
518 - Shows examples of two classes, each done first with and then
519 without Moose. This makes a nice parallel to
520 Moose::Intro. (Dave Rolsky)
522 * Moose::Util::TypeConstraints
523 - Fixed a bug in find_or_parse_type_constraint so that it
524 accepts a Moose::Meta::TypeConstraint object as the parent
525 type, not just a name (jnapiorkowski)
526 - added tests (jnapiorkowski)
529 - If Sub::Name was not present, unimporting failed to actually
530 remove some sugar subs, causing test failures (Dave Rolsky)
532 0.56 Mon September 1, 2008
533 For those not following the series of dev releases, there are
534 several major changes in this release of Moose.
535 ! Moose::init_meta should now be called as a method. See the
538 - Major performance improvements by nothingmuch.
540 - New modules for extension writers, Moose::Exporter and
541 Moose::Util::MetaRole by Dave Rolsky.
543 - Lots of doc improvements and additions, especially in the
548 * Removed all references to the experimental-but-no-longer-needed
549 Moose::Meta::Role::Application::ToMetaclassInstance.
551 * Require Class::MOP 0.65.
553 0.55_04 Sat August 30, 2008
554 * Moose::Util::MetaRole
555 * Moose::Cookbook::Extending::Recipe2
556 - This simplifies the application of roles to any meta class, as
557 well as the base object class. Reimplemented metaclass traits
558 using this module. (Dave Rolsky)
560 * Moose::Cookbook::Extending::Recipe1
561 - This a new recipe, an overview of various ways to write Moose
562 extensions (Dave Rolsky)
564 * Moose::Cookbook::Extending::Recipe3
565 * Moose::Cookbook::Extending::Recipe4
566 - These used to be Extending::Recipe1 and Extending::Recipe2,
569 0.55_03 Fri August 29, 2008
570 * No changes from 0.55_02 except increasing the Class::MOP
571 dependency to 0.64_07.
573 0.55_02 Fri August 29, 2008
574 * Makefile.PL and Moose.pm
575 - explicitly require Perl 5.8.0+ (Dave Rolsky)
577 * Moose::Util::TypeConstraints
578 - Fix warnings from find_type_constraint if the type is not
581 * Moose::Meta::TypeConstraint
582 - Predicate methods (equals/is_a_type_of/is_subtype_of) now
583 return false if the type you specify cannot be found in the
584 type registry, rather than throwing an unhelpful and
585 coincidental exception. (t0m).
586 - added docs & test for this (t0m)
588 * Moose::Meta::TypeConstraint::Registry
589 - add_type_constraint now throws an exception if a parameter is
591 - added docs & test for this (t0m)
593 * Moose::Cookbook::FAQ
594 - Added a faq entry on the difference between "role" and "trait"
598 - Fixed a bug that caused role composition to not see a required
599 method when that method was provided by another role being
600 composed at the same time. (Dave Rolsky)
601 - test and bug finding (tokuhirom)
603 0.55_01 Wed August 20, 2008
605 !! Calling Moose::init_meta as a function is now !!
606 !! deprecated. Please see the Moose.pm docs for details. !!
608 * Moose::Meta::Method::Constructor
609 - Fix inlined constructor so that values produced by default
610 or builder methods are coerced as required. (t0m)
611 - added test for this (t0m)
613 * Moose::Meta::Attribute
614 - A lazy attribute with a default or builder did not attempt to
615 coerce the default value. The immutable code _did_
617 - added test for this (t0m)
620 - This is a new helper module for writing "Moose-alike"
621 modules. This should make the lives of MooseX module authors
622 much easier. (Dave Rolsky)
625 * Moose::Cookbook::Meta::Recipe5
626 - Implemented metaclass traits (and wrote a recipe for it):
628 use Moose -traits => 'Foo'
630 This should make writing small Moose extensions a little
633 * Moose::Cookbook::Basics::Recipe1
634 - Removed any examples of direct hashref access, and applied an
635 editorial axe to reduce verbosity. (Dave Rolsky)
637 * Moose::Cookbook::Basics::Recipe1
638 - Also applied an editorial axe here. (Dave Rolsky)
641 * Moose::Cookbook::Extending::Recipe1
642 * Moose::Cookbook::Extending::Recipe2
643 - Rewrote extending and embedding moose documentation and
644 recipes to use Moose::Exporter (Dave Rolsky)
648 - These two modules now warn when you load them from the main
649 package "main" package, because we will not export sugar to
650 main. Previously it just did nothing. (Dave Rolsky)
653 - Now provide an init_meta method just like Moose.pm, and you
654 can call this to provide an alternate role metaclass. (Dave
655 Rolsky and nothingmuch)
656 - get_method_map now respects the package cache flag (nothingmuch)
659 - Two new methods - add_method and wrap_method_body
663 - Optimizations including allowing constructors to accept hash
664 refs, making many more classes immutable, and making
665 constructors immutable. (nothingmuch)
667 0.55 Sun August 3, 2008
668 * Moose::Meta::Attribute
669 - breaking down the way 'handles' methods are
670 created so that the process can be more easily
671 overridden by subclasses (stevan)
673 * Moose::Meta::TypeConstraint
674 - fixing what is passed into a ->message with
675 the type constraints (RT #37569)
676 - added tests for this (Charles Alderman)
678 * Moose::Util::TypeConstraints
679 - fix coerce to accept anon types like subtype can (mst)
682 - reorganized the recipes into sections - Basics, Roles, Meta,
683 Extending - and wrote abstracts for each section (Dave Rolsky)
685 * Moose::Cookbook::Basics::Recipe10
686 - A new recipe that demonstrates operator overloading
687 in combination with Moose. (bluefeet)
689 * Moose::Cookbook::Meta::Recipe1
690 - an introduction to what meta is and why you'd want to make
691 your own metaclass extensions (Dave Rolsky)
693 * Moose::Cookbook::Meta::Recipe4
694 - a very simple metaclass example (Dave Rolsky)
696 * Moose::Cookbook::Extending::Recipe1
697 - how to write a Moose-alike module to use your own object base
700 * Moose::Cookbook::Extending::Recipe2
701 - how to write modules with an API just like C<Moose.pm> (Dave
705 - Tons of fixes, both syntactical and grammatical (Dave
706 Rolsky, Paul Fenwick)
708 0.54 Thurs. July 3, 2008
709 ... this is not my day today ...
711 * Moose::Meta::Attribute
712 - fixed legal_options_for_inheritance such that
713 clone_and_inherit options still works for
714 Class::MOP::Attribute objects and therefore
715 does not break MooseX::AttributeHelpers
718 0.53 Thurs. July 3, 2008
719 * Whoops, I guess I should run 'make manifest' before
720 actually releasing the module. No actual changes
721 in this release, except the fact that it includes
722 the changes that I didn't include in the last
725 0.52 Thurs. July 3, 2008
727 - added "FEATURE REQUESTS" section to the Moose docs
728 to properly direct people (stevan) (RT #34333)
729 - making 'extends' croak if it is passed a Role since
730 this is not ever something you want to do
731 (fixed by stevan, found by obra)
732 - added tests for this (stevan)
735 - adding support for DOES (as in UNIVERSAL::DOES)
737 - added test for this
739 * Moose::Meta::Attribute
740 - added legal_options_for_inheritance (wreis)
741 - added tests for this (wreis)
743 * Moose::Cookbook::Snacks::*
744 - removed some of the unfinished snacks that should
745 not have been released yet. Added some more examples
746 to the 'Keywords' snack. (stevan)
748 * Moose::Cookbook::Style
749 - added general Moose "style guide" of sorts to the
750 cookbook (nothingmuch) (RT #34335)
753 - added more BUILDARGS tests (stevan)
755 0.51 Thurs. Jun 26, 2008
757 - add unimport so "no Moose::Role" actually does
760 * Moose::Meta::Role::Application::ToRole
761 - when RoleA did RoleB, and RoleA aliased a method from RoleB in
762 order to provide its own implementation, that method still got
763 added to the list of required methods for consumers of
764 RoleB. Now an aliased method is only added to the list of
765 required methods if the role doing the aliasing does not
766 provide its own implementation. See Recipe 11 for an example
767 of all this. (Dave Rolsky)
768 - added tests for this
770 * Moose::Meta::Method::Constructor
771 - when a single argument that wasn't a hashref was provided to
772 an immutabilized constructor, the error message was very
773 unhelpful, as opposed to the non-immutable error. Reported by
775 - added test for this (Dave Rolsky)
777 * Moose::Meta::Attribute
778 - added support for meta_attr->does("ShortAlias") (sartak)
779 - added tests for this (sartak)
780 - moved the bulk of the `handles` handling to the new
781 install_delegation method (Stevan)
784 - Added BUILDARGS, a new step in new()
786 * Moose::Meta::Role::Application::RoleSummation
787 - fix typos no one ever sees (sartak)
789 * Moose::Util::TypeConstraints
790 * Moose::Meta::TypeConstraint
791 * Moose::Meta::TypeCoercion
792 - Attempt to work around the ??{ } vs. threads issue
794 - Some null_constraint optimizations
796 0.50 Thurs. Jun 11, 2008
797 - Fixed a version number issue by bumping all modules
800 0.49 Thurs. Jun 11, 2008
801 !! This version now approx. 20-25% !!
802 !! faster with new Class::MOP 0.59 !!
804 * Moose::Meta::Attribute
805 - fixed how the is => (ro|rw) works with
806 custom defined reader, writer and accessor
808 - added docs for this (TODO).
809 - added tests for this (Thanks to Penfold)
810 - added the custom attribute alias for regular
811 Moose attributes which is "Moose"
812 - fix builder and default both being used
817 Moose::Meta::Attribute
819 Moose::Meta::Role::Composite
820 Moose::Util::TypeConstraints
821 - switched usage of reftype to ref because
825 - changing add_package_symbol to use the new
829 - fixed how DEMOLISHALL is called so that it
830 can be overrided in subclasses (thanks to Sartak)
831 - added test for this (thanks to Sartak)
833 * Moose::Util::TypeConstraints
834 - move the ClassName type check code to
835 Class::MOP::is_class_loaded (thanks to Sartak)
837 * Moose::Cookbook::Recipe11
838 - add tests for this (thanks to tokuhirom)
840 0.48 Thurs. May 29, 2008
841 (early morning release engineering)--
843 - fixing the version in Moose::Meta::Method::Destructor
844 which was causing the indexer to choke
846 0.47 Thurs. May 29, 2008
847 (late night release engineering)--
849 - fixing the version is META.yml, no functional
850 changes in this release
852 0.46 Wed. May 28, 2008
853 !! This version now approx. 20-25% !!
854 !! faster with new Class::MOP 0.57 !!
857 - some optimizations of the &initialize method
858 since it is called so often by &meta
862 - now use the get_all_package_symbols from the
863 updated Class::MOP, test suite is now 10 seconds
866 * Moose::Meta::Method::Destructor
867 - is_needed can now also be called as a class
868 method for immutablization to check if the
869 destructor object even needs to be created
872 * Moose::Meta::Method::Destructor
873 Moose::Meta::Method::Constructor
874 - added more descriptive error message to help
875 keep people from wasting time tracking an error
876 that is easily fixed by upgrading.
878 0.45 Saturday, May 24, 2008
880 - Because of work in Class::MOP 0.57, all
881 XS based functionality is now optional
882 and a Pure Perl version is supplied
883 - the CLASS_MOP_NO_XS environment variable
884 can now be used to force non-XS versions
886 - several of the packages have been tweaked
887 to take care of this, mostly we added
888 support for the package_name and name
889 variables in all the Method metaclasses
890 - before/around/after method modifiers now
891 support regexp matching of names
892 (thanks to Takatoshi Kitano)
893 - tests added for this
894 - NOTE: this only works for classes, it
895 is currently not supported in roles,
896 but, ... patches welcome
897 - All usage of Carp::confess have been replaced
898 by Carp::croak in the "keyword" functions since
899 the stack trace is usually not helpful
902 - All usage of Carp::confess have been replaced
903 by Carp::croak in the "keyword" functions since
904 the stack trace is usually not helpful
905 - The 'has' keyword for roles now accepts the
906 same array ref form that Moose.pm does
907 (has [qw/foo bar/] => (is => 'rw', ...))
908 - added test for this
910 * Moose::Meta::Attribute
911 - trigger on a ro-attribute is no longer an
912 error, as it's useful to trigger off of the
916 - added same 'add_package_symbol' fix as in
920 - does_role now handles non-Moose classes
922 - added tests for this
923 - added the 'add_method_modifier' function
924 (thanks to Takatoshi Kitano)
926 * Moose::Util::TypeConstraints
927 - subtypes of parameterizable types now are
928 themselves parameterizable types
930 * Moose::Meta::Method::Constructor
931 - fixed bug where trigger was not being
932 called by the inlined immutable
934 - added test for this (thanks to Caelum)
936 * Moose::Meta::Role::Application::ToInstance
937 - now uses the metaclass of the instance
938 (if possible) to create the anon-class
939 (thanks Jonathan Rockway)
941 * Moose::Cookbook::Recipe22
942 - added the meta-attribute trait recipe
946 - fixed hash-ordering test bug that was
947 causing occasional cpantester failures
948 - renamed the t/000_recipe/*.t tests to be
949 more descriptive (thanks to Sartak)
951 0.44 Sat. May 10, 2008
953 - made make_immutable warning cluck to
954 show where the error is (thanks mst)
957 - BUILDALL and DEMOLISHALL now call
958 ->body when looping through the
959 methods, to avoid the overloaded
961 - fixed issue where DEMOLISHALL was
962 eating the $@ values, and so not
963 working correctly, it still kind of
964 eats them, but so does vanilla perl
965 - added tests for this
967 * Moose::Cookbook::Recipe7
968 - added new recipe for immutable
969 functionality (thanks Dave Rolsky)
971 * Moose::Cookbook::Recipe9
972 - added new recipe for builder and
973 lazy_build (thanks Dave Rolsky)
975 * Moose::Cookbook::Recipe11
976 - added new recipe for method aliasing
977 and exclusion with Roles (thanks Dave Rolsky)
980 - fixed Win32 test failure (thanks spicyjack)
982 ~ removed Build.PL and Module::Build compat
983 since Module::Install has done that.
985 0.43 Wed. April, 30, 2008
987 drink more coffee before
988 doing release engineering
990 - whoops, forgot to do the smolder tests,
991 and we broke some of the custom meta-attr
992 modules. This fixes that.
994 0.42 Mon. April 28, 2008
995 - some bad tests slipped by, nothing else
996 changed in this release (cpantesters++)
998 - upped the Class::MOP dependency to 0.55
999 since we have tests which need the C3
1002 0.41 Mon. April 28, 2008
1003 ~~ numerous documentation updates ~~
1005 - Changed all usage of die to Carp::croak for better
1006 error reporting (initial patch by Tod Hagan)
1008 ** IMPORTANT NOTE **
1009 - the make_immutable keyword is now deprecated, don't
1010 use it in any new code and please fix your old code
1011 as well. There will be 2 releases, and then it will
1017 - refactored the way inner and super work to avoid
1018 any method/@ISA cache penalty (nothingmuch)
1020 * Moose::Meta::Class
1021 - fixing &new_object to make sure trigger gets the
1022 coerced value (spotted by Charles Alderman on the
1024 - added test for this
1026 * Moose::Meta::Method::Constructor
1027 - immutable classes which had non-lazy attributes were calling
1028 the default generating sub twice in the constructor. (bug
1029 found by Jesse Luehrs, fixed by Dave Rolsky)
1030 - added tests for this (Dave Rolsky)
1031 - fix typo in initialize_body method (nothingmuch)
1033 * Moose::Meta::Method::Destructor
1034 - fix typo in initialize_body method (nothingmuch)
1036 * Moose::Meta::Method::Overriden
1037 Moose::Meta::Method::Augmented
1038 - moved the logic for these into their own
1039 classes (nothingmuch)
1041 * Moose::Meta::Attribute
1042 - inherited attributes may now be extended without
1043 restriction on the type ('isa', 'does') (Sartak)
1044 - added tests for this (Sartak)
1045 - when an attribute property is malformed (such as lazy without
1046 a default), give the name of the attribute in the error
1048 - added the &applied_traits and &has_applied_traits methods
1049 to allow introspection of traits
1050 - added tests for this
1051 - moved 'trait' and 'metaclass' argument handling to here from
1053 - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
1054 '+foo' syntax) (nothingmuch)
1055 - added tests for this (t0m)
1058 - localize $@ inside DEMOLISHALL to avoid it
1059 eating $@ (found by Ernesto)
1060 - added test for this (thanks to Ernesto)
1062 * Moose::Util::TypeConstraints
1063 - &find_type_constraint now DWIMs when given an
1064 type constraint object or name (nothingmuch)
1065 - &find_or_create_type_constraint superseded with a number of more
1067 - find_or_create_{isa,does}_type_constraint
1068 - find_or_parse_type_constraint
1070 * Moose::Meta::TypeConstraint
1071 Moose::Meta::TypeConstraint::Class
1072 Moose::Meta::TypeConstraint::Role
1073 Moose::Meta::TypeConstraint::Enum
1074 Moose::Meta::TypeConstraint::Union
1075 Moose::Meta::TypeConstraint::Parameterized
1076 - added the &equals method for comparing two type
1077 constraints (nothingmuch)
1078 - added tests for this (nothingmuch)
1080 * Moose::Meta::TypeConstraint
1081 - add the &parents method, which is just an alias to &parent.
1082 Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
1084 * Moose::Meta::TypeConstraint::Class
1085 - added the class attribute for introspection purposes
1087 - added tests for this
1089 * Moose::Meta::TypeConstraint::Enum
1090 Moose::Meta::TypeConstraint::Role
1091 - broke these out into their own classes (nothingmuch)
1093 * Moose::Cookbook::Recipe*
1094 - fixed references to test file locations in the POD
1095 and updated up some text for new Moose features
1099 - Added &resolve_metaclass_alias, a helper function for finding an actual
1100 class for a short name (e.g. in the traits list)
1102 0.40 Fri. March 14, 2008
1103 - I hate Pod::Coverage
1105 0.39 Fri. March 14, 2008
1107 - documenting the use of '+name' with attributes
1108 that come from recently composed roles. It makes
1109 sense, people are using it, and so why not just
1110 officially support it.
1111 - fixing the 'extends' keyword so that it will not
1112 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
1115 - added the perl -Moose=+Class::Name feature to allow
1116 monkeypatching of classes in one liners
1119 - fixing the 'apply_all_roles' keyword so that it will not
1120 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
1122 * Moose::Meta::Class
1123 - added ->create method which now supports roles (thanks to jrockway)
1124 - added tests for this
1125 - added ->create_anon_class which now supports roles and caching of
1126 the results (thanks to jrockway)
1127 - added tests for this
1128 - made ->does_role a little more forgiving when it is
1129 checking a Class::MOP era metaclasses.
1131 * Moose::Meta::Role::Application::ToInstance
1132 - it is now possible to pass extra params to be used when
1133 a role is applied to an the instance (rebless_params)
1134 - added tests for this
1136 * Moose::Util::TypeConstraints
1137 - class_type now accepts an optional second argument for a
1138 custom message. POD anotated accordingly (groditi)
1139 - added tests for this
1140 - it is now possible to make anon-enums by passing 'enum' an
1141 ARRAY ref instead of the $name => @values. Everything else
1143 - added tests for this
1146 - making test for using '+name' on attributes consumed
1147 from a role, it works and makes sense too.
1149 * Moose::Meta::Attribute
1150 - fix handles so that it doesn't return nothing
1151 when the method cannot be found, not sure why
1152 it ever did this originally, this means we now
1153 have slightly better support for AUTOLOADed
1155 - added more delegation tests
1156 - adding ->does method to this so as to better
1157 support traits and their introspection.
1158 - added tests for this
1161 - localizing the Data::Dumper configurations so
1162 that it does not pollute others (RT #33509)
1163 - made ->does a little more forgiving when it is
1164 passed Class::MOP era metaclasses.
1166 0.38 Fri. Feb. 15, 2008
1167 * Moose::Meta::Attribute
1168 - fixed initializer to correctly do
1169 type checking and coercion in the
1171 - added tests for this
1174 - fixed some finicky tests (thanks to konobi)
1176 0.37 Thurs. Feb. 14, 2008
1178 - fixed some details in Moose::init_meta
1179 and its superclass handling (thanks thepler)
1180 - added tests for this (thanks thepler)
1181 - 'has' now dies if you don't pass in name
1183 - added the 'make_immutable' keyword as a shortcut
1186 * Moose::Meta::Class
1187 Moose::Meta::Method::Constructor
1188 Moose::Meta::Attribute
1189 - making (init_arg => undef) work here too
1190 (thanks to nothingmuch)
1192 * Moose::Meta::Attribute
1193 Moose::Meta::Method::Constructor
1194 Moose::Meta::Method::Accessor
1195 - make lazy attributes respect attr initializers (rjbs)
1196 - added tests for this
1198 * Moose::Util::TypeConstraints
1199 Moose::Util::TypeConstraints::OptimizedConstraints
1200 Moose::Meta::TypeConstraints
1201 Moose::Meta::Attribute
1202 Moose::Meta::Method::Constructor
1203 Moose::Meta::Method::Accessor
1204 - making type errors use the
1205 assigned message (thanks to Sartak)
1206 - added tests for this
1208 * Moose::Meta::Method::Destructor
1209 - making sure DESTROY gets inlined properly
1210 with successive DEMOLISH calls (thanks to manito)
1212 * Moose::Meta::Attribute
1213 Moose::Meta::Method::Accessor
1214 - fixed handling of undef with type constraints
1216 - added tests for this
1219 - added &get_all_init_args and &get_all_attribute_values
1220 (thanks to Sartak and nothingmuch)
1222 0.36 Sat. Jan. 26, 2008
1224 Moose::Meta::Attribute
1225 - role type tests now support when roles are
1226 applied to non-Moose classes (found by ash)
1227 - added tests for this (thanks to ash)
1228 - couple extra tests to boost code coverage
1230 * Moose::Meta::Method::Constructor
1231 - improved fix for handling Class::MOP attributes
1232 - added test for this
1234 * Moose::Meta::Class
1235 - handled the add_attribute($attribute_meta_object)
1237 - added test for this
1239 0.35 Tues. Jan. 22, 2008
1240 * Moose::Meta::Method::Constructor
1241 - fix to make sure even Class::MOP attributes
1242 are handled correctly (Thanks to Dave Rolsky)
1243 - added test for this (also Dave Rolsky)
1245 * Moose::Meta::Class
1246 - improved error message on _apply_all_roles,
1247 you should now use Moose::Util::apply_all_roles
1248 and you shouldnt have been using a _ prefixed
1249 method in the first place ;)
1251 0.34 Mon. Jan. 21, 2008
1252 ~~~ more misc. doc. fixes ~~~
1253 ~~ updated copyright dates ~~
1255 Moose is now a postmodern object system :)
1256 - (see the POD for details)
1258 * <<Role System Refactoring>>
1259 - this release contains a major reworking and
1260 cleanup of the role system
1261 - 100% backwards compat.
1262 - Role application now restructured into seperate
1263 classes based on type of applicants
1264 - Role summation (combining of more than one role)
1265 is much cleaner and anon-classes are no longer
1266 used in this process
1267 - new Composite role metaclass
1268 - runtime application of roles to instances
1269 is now more efficient and re-uses generated
1270 classes when applicable
1272 * <<New Role composition features>>
1273 - methods can now be excluded from a given role
1275 - methods can now be aliased to another name (and
1276 still retain the original as well)
1278 * Moose::Util::TypeConstraints::OptimizedConstraints
1279 - added this module (see above)
1281 * Moose::Meta::Class
1282 - fixed the &_process_attribute method to be called
1283 by &add_attribute, so that the API is now correct
1285 * Moose::Meta::Method::Accessor
1286 - fixed bug when passing a list of values to
1287 an accessor would get (incorrectly) ignored.
1288 Thanks to Sartak for finding this ;)
1289 - added tests for this (Sartak again)
1291 * Moose::Meta::Method::Accessor
1292 Moose::Meta::Method::Constructor
1293 Moose::Meta::Attribute
1294 Moose::Meta::TypeConstraint
1295 Moose::Meta::TypeCoercion
1296 - lots of cleanup of such things as:
1298 - type constraint handling
1299 - error handling/messages
1300 (thanks to nothingmuch)
1302 * Moose::Meta::TypeConstraint::Parameterizable
1303 - added this module to support the refactor
1304 in Moose::Meta::TypeConstraint::Parameterized
1306 * Moose::Meta::TypeConstraint::Parameterized
1307 - refactored how these types are handled so they
1308 are more generic and not confined to ArrayRef
1312 - shortened some file names for better VMS support (RT #32381)
1314 0.33 Fri. Dec. 14, 2007
1315 !! Moose now loads 2 x faster !!
1316 !! with new Class::MOP 0.49 !!
1318 ++ new oose.pm module to make command line
1319 Moose-ness easier (see POD docs for more)
1321 * Moose::Meta::Class
1323 - several tweaks to take advantage of the
1324 new method map caching in Class::MOP
1326 * Moose::Meta::TypeConstraint::Parameterized
1327 - allow subtypes of ArrayRef and HashRef to
1328 be used as a container (sartak)
1329 - added tests for this
1330 - basic support for coercion to ArrayRef and
1331 HashRef for containers (sartak)
1332 - added tests for this
1334 * Moose::Meta::TypeCoercion
1335 - coercions will now create subtypes as needed
1336 so you can now add coercions to parameterized
1337 types without having to explictly define them
1338 - added tests for this
1340 * Moose::Meta::Method::Accessor
1341 - allow subclasses to decide whether we need
1342 to copy the value into a new variable (sartak)
1344 0.32 Tues. Dec. 4, 2007
1345 * Moose::Util::TypeConstraints
1346 - fixing how subtype aliases of unions work
1347 they should inherit the parent's coercion
1348 - added tests for this
1349 - you can now define multiple coercions on
1350 a single type at different times instead of
1351 having to do it all in one place
1352 - added tests for this
1354 * Moose::Meta::TypeConstraint
1355 - there is now a default constraint of sub { 1 }
1356 instead of Moose::Util::TypeConstraints setting
1359 * Moose::Meta::TypeCoercion
1360 * Moose::Meta::TypeCoercion::Union
1361 - added the &has_coercion_for_type and
1362 &add_type_coercions methods to support the
1363 new features above (although you cannot add
1364 more type coercions for Union types)
1366 0.31 Mon. Nov. 26, 2007
1367 * Moose::Meta::Attribute
1368 - made the +attr syntax handle extending types with
1369 parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
1370 now works if the original foo is an ArrayRef.
1371 - added tests for this.
1372 - delegation now works even if the attribute does not
1373 have a reader method using the get_read_method_ref
1374 method from Class::MOP::Attribute.
1375 - added tests for this
1376 - added docs for this
1378 * Moose::Util::TypeConstraints
1379 - passing no "additional attribute info" to
1380 &find_or_create_type_constraint will no longer
1381 attempt to create an __ANON__ type for you,
1382 instead it will just return undef.
1383 - added docs for this
1385 0.30 Fri. Nov. 23, 2007
1386 * Moose::Meta::Method::Constructor
1387 -builder related bug in inlined constructor. (groditi)
1389 * Moose::Meta::Method::Accessor
1390 - genereate unnecessary calls to predicates and refactor
1391 code generation for runtime speed (groditi)
1393 * Moose::Util::TypeConstraints
1394 - fix ClassName constraint to introspect symbol table (mst)
1395 - added more tests for this (mst)
1396 - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
1397 with work correctly.
1398 - added tests for this
1401 - adding the link to Recipie 11 (written by Sartak)
1402 - adding test for SYNOPSIS code
1405 - New tests for builder bug. Upon instantiation, if an
1406 attribute had a builder, no value and was not lazy the
1407 builder default was not getting run, oops. (groditi)
1409 0.29 Tues. Nov. 13, 2007
1410 * Moose::Meta::Attribute
1411 - Fix error message on missing builder method (groditi)
1413 * Moose::Meta::Method::Accessor
1414 - Fix error message on missing builder method (groditi)
1417 - Add test to check for the correct error message when
1418 builder method is missing (groditi)
1420 0.28 Tues. Nov. 13, 2007
1421 - 0.27 packaged incorrectly (groditi)
1423 0.27 Tues. Nov. 13, 2007
1424 * Moose::Meta::Attribute
1425 - Added support for the new builder option (groditi)
1426 - Added support for lazy_build option (groditi)
1427 - Changed slot initialization for predicate changes (groditi)
1429 * Moose::Meta::Method::Accessor
1430 - Added support for lazy_build option (groditi)
1431 - Fix inline methods to work with corrected predicate
1434 * Moose::Meta::Method::Constructor
1435 - Added support for lazy_build option (groditi)
1438 - tests for builder and lazy_build (groditi)
1440 * fixing some misc. bits in the docs that
1441 got mentioned on CPAN Forum & perlmonks
1444 - fixed how required methods are handled
1445 when they encounter overriden or modified
1446 methods from a class (thanks to confound).
1447 - added tests for this
1449 * Moose::Util::TypeConstraint
1450 - fixed the type notation parser so that
1451 the | always creates a union and so is
1452 no longer a valid type char (thanks to
1453 konobi, mugwump and #moose for working
1455 - added more tests for this
1457 0.26 Thurs. Sept. 27, 2007
1460 * Parameterized Types
1461 We now support parameterized collection types, such as:
1462 ArrayRef[Int] # array or integers
1463 HashRef[Object] # a hash with object values
1464 They can also be nested:
1465 ArrayRef[HashRef[RegexpRef]] # an array of hashes with regex values
1466 And work with the type unions as well:
1467 ArrayRef[Int | Str] # array of integers of strings
1469 * Better Framework Extendability
1470 Moose.pm is now "extendable" such that it is now much
1471 easier to extend the framework and add your own keywords
1472 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
1473 section of the Moose.pm docs.
1476 In an effort to begin documenting some of the various
1477 details of Moose as well as some common idioms, we have
1478 created Moose::Cookbook::Snacks as a place to find
1479 small (easily digestable) nuggets of Moose code.
1482 ~ Several doc updates/cleanup thanks to castaway ~
1484 - converted build system to use Module::Install instead of
1485 Module::Build (thanks to jrockway)
1488 - added all the meta classes to the immutable list and
1489 set it to inline the accessors
1490 - fix import to allow Sub::Exporter like { into => }
1491 and { into_level => } (perigrin)
1492 - exposed and documented init_meta() to allow better
1493 embedding and extending of Moose (perigrin)
1496 - complete re-organization of the test suite
1497 - added some new tests as well
1498 - finally re-enabled the Moose::POOP test since
1499 the new version of DBM::Deep now works again
1502 * Moose::Meta::Class
1503 - fixed very odd and very nasty recursion bug with
1505 - added tests for this (eilara)
1507 * Moose::Meta::Attribute
1508 Moose::Meta::Method::Constructor
1509 Moose::Meta::Method::Accessor
1510 - fixed issue with overload::Overloaded getting called
1511 on non-blessed items. (RT #29269)
1512 - added tests for this
1514 * Moose::Meta::Method::Accessor
1515 - fixed issue with generated accessor code making
1516 assumptions about hash based classes (thanks to dexter)
1518 * Moose::Coookbook::Snacks
1519 - these are bits of documentation, not quite as big as
1520 Recipes but which have no clear place in the module docs.
1521 So they are Snacks! (horray for castaway++)
1523 * Moose::Cookbook::Recipe4
1524 - updated it to use the new ArrayRef[MyType] construct
1525 - updated the accompanying test as well
1527 +++ Major Refactor of the Type Constraint system +++
1528 +++ with new features added as well +++
1530 * Moose::Util::TypeConstraint
1531 - no longer uses package variable to keep track of
1532 the type constraints, now uses the an instance of
1533 Moose::Meta::TypeConstraint::Registry to do it
1534 - added more sophisticated type notation parsing
1536 - added tests for this
1538 * Moose::Meta::TypeConstraint
1539 - some minor adjustments to make subclassing easier
1540 - added the package_defined_in attribute so that we
1541 can track where the type constraints are created
1543 * Moose::Meta::TypeConstraint::Union
1544 - this is now been refactored to be a subclass of
1545 Moose::Meta::TypeConstraint
1547 * Moose::Meta::TypeCoercion::Union
1548 - this has been added to service the newly refactored
1549 Moose::Meta::TypeConstraint::Union and is itself
1550 a subclass of Moose::Meta::TypeCoercion
1552 * Moose::Meta::TypeConstraint::Parameterized
1553 - added this module (taken from MooseX::AttributeHelpers)
1554 to help construct nested collection types
1555 - added tests for this
1557 * Moose::Meta::TypeConstraint::Registry
1558 - added this class to keep track of type constraints
1560 0.25 Mon. Aug. 13, 2007
1562 - Documentation update to reference Moose::Util::TypeConstraints
1563 under 'isa' in 'has' for how to define a new type
1564 (thanks to shlomif).
1566 * Moose::Meta::Attribute
1567 - required attributes now will no longer accept undef
1568 from the constructor, even if there is a default and lazy
1569 - added tests for this
1570 - default subroutines must return a value which passes the
1572 - added tests for this
1574 * Moose::Meta::Attribute
1575 * Moose::Meta::Method::Constructor
1576 * Moose::Meta::Method::Accessor
1577 - type-constraint tests now handle overloaded objects correctly
1578 in the error message
1579 - added tests for this (thanks to EvanCarroll)
1581 * Moose::Meta::TypeConstraint::Union
1582 - added (has_)hand_optimized_constraint to this class so that
1583 it behaves as the regular Moose::Meta::TypeConstraint does.
1586 - large refactoring of this code
1587 - added several more tests
1588 - tests for subtle conflict resolition issues
1589 added, but not currently running
1592 * Moose::Cookbook::Recipe7
1593 - added new recipe for augment/inner functionality
1595 - added test for this
1598 - a formal definition of roles (still in progress)
1601 - utilities for easier working with Moose classes
1602 - added tests for these
1605 - This contains Moose specific test functions
1606 - added tests for these
1608 0.24 Tues. July 3, 2007
1609 ~ Some doc updates/cleanup ~
1611 * Moose::Meta::Attribute
1612 - added support for roles to be given as parameters
1613 to the 'handles' option.
1614 - added tests and docs for this
1615 - the has '+foo' attribute form now accepts changes to
1616 the lazy option, and the addition of a handles option
1617 (but not changing the handles option)
1618 - added tests and docs for this
1621 - required methods are now fetched using find_method_by_name
1622 so that required methods can come from superclasses
1623 - adjusted tests for this
1625 0.23 Mon. June 18, 2007
1626 * Moose::Meta::Method::Constructor
1627 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
1628 * Moose::Meta::Class
1629 - Modify make_immutable to work with the new Class::MOP immutable
1630 mechanism + POD + very basic test (groditi)
1631 * Moose::Meta::Attribute
1632 - Fix handles to use goto() so that caller() comes out properly on
1633 the other side (perigrin)
1635 0.22 Thurs. May 31, 2007
1636 * Moose::Util::TypeConstraints
1637 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
1638 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
1639 prototypes for functions
1640 - added the ClassName type constraint, this checks for strings
1641 which will respond true to ->isa(UNIVERSAL).
1642 - added tests and docs for this
1643 - subtyping just in name now works correctly by making the
1644 default for where be { 1 }
1645 - added test for this
1647 * Moose::Meta::Method::Accessor
1648 - coerce and lazy now work together correctly, thanks to
1649 merlyn for finding this bug
1650 - tests added for this
1651 - fix reader presedence bug in Moose::Meta::Attribute + tests
1654 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
1655 a HASH-ref and missed. This produces better error messages then
1656 having it die cause undef is not a HASH.
1657 - added tests for this
1659 0.21 Thursday, May 2nd, 2007
1661 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
1662 - modified unimport to remove super and inner along with the rest
1663 - altered unimport tests to handle this
1666 - altered super export to populate SUPER_SLOT
1668 * Moose::Meta::Class
1669 - altered augment and override modifier application to use *_SLOT
1670 - modified tests for these to unimport one test class each to test
1673 - fixed issue where custom attribute metaclasses
1674 where not handled correctly in roles
1675 - added tests for this
1677 * Moose::Meta::Class
1678 - fixed issue where extending metaclasses with
1679 roles would blow up. Thanks to Aankhen`` for
1680 finding this insidious error, and it's solution.
1682 ~~ lots of spelling and grammer fixes in the docs,
1683 many many thanks to rlb3 and Aankhen for these :)
1685 0.20 Friday, April 6th, 2007
1686 >> I messed up the SKIP logic in one test
1687 so this release is just to fix that.
1690 - 'has' now also accepts an ARRAY ref
1691 to create multiple attrs (see docs)
1692 (thanks to konobi for this)
1693 - added tests and docs
1695 0.19 Thurs. April 5th, 2007
1696 ~~ More documentation updates ~~
1698 * Moose::Util::TypeConstraints
1699 - 'type' now supports messages as well
1700 thanks to phaylon for finding this
1701 - added tests for this
1702 - added &list_all_type_constraints and
1703 &list_all_builtin_type_constraints
1704 functions to facilitate introspection.
1706 * Moose::Meta::Attribute
1707 - fixed regexp 'handles' declarations
1708 to build the list of delegated methods
1709 correctly (and not override important
1710 things like &new) thanks to ashleyb
1712 - added tests and docs for this
1713 - added the 'documentation' attributes
1714 so that you can actually document your
1715 attributes and inspect them through the
1717 - added tests and docs for this
1719 * Moose::Meta::Class
1720 - when loading custom attribute metaclasses
1721 it will first look in for the class in the
1722 Moose::Meta::Attribute::Custom::$name, and
1723 then default to just loading $name.
1724 - added tests and docs for this
1726 * Moose::Meta::TypeConstraint
1727 - type constraints now stringify to their names.
1728 - added test for this
1731 - added tests to assure we work with Module::Refresh
1732 - added stricter test skip logic in the Moose POOP
1733 test, ask Rob Kinyon why.
1734 - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
1736 0.18 Sat. March 10, 2007
1737 ~~ Many, many documentation updates ~~
1740 - We now use Class::MOP::load_class to
1742 - added tests to show types and subtypes
1743 working with Declare::Constraints::Simple
1744 and Test::Deep as constraint engines.
1747 !! You must have Class::MOP 0.37_001 !!
1748 !! for this developer release to work !!
1750 This release was primarily adding the immutable
1751 feature to Moose. An immutable class is one which
1752 you promise not to alter. When you set the class
1753 as immutable it will perform various bits of
1754 memoization and inline certain part of the code
1755 (constructors, destructors and accessors). This
1756 minimizes (and in some cases totally eliminates)
1757 one of Moose's biggest performance hits. This
1758 feature is not on by default, and is 100% optional.
1759 It has several configurable bits as well, so you
1760 can pick and choose to your specific needs.
1762 The changes involved in this were fairly wide and
1763 highly specific, but 100% backwards compatible, so
1764 I am not going to enumerate them here. If you are
1765 truely interested in what was changed, please do
1768 0.17 Tues. Nov. 14, 2006
1769 * Moose::Meta::Method::Accessor
1770 - bugfix for read-only accessors which
1771 are have a type constraint and lazy.
1772 Thanks to chansen for finding it.
1774 0.16 Tues. Nov. 14, 2006
1776 There are some speed improvements in this release,
1777 but they are only the begining, so stay tuned.
1780 - BUILDALL and DEMOLISHALL no longer get
1781 called unless they actually need to be.
1782 This gave us a signifigant speed boost
1783 for the cases when there is no BUILD or
1784 DEMOLISH method present.
1786 * Moose::Util::TypeConstraints
1787 * Moose::Meta::TypeConstraint
1788 - added an 'optimize_as' option to the
1789 type constraint, which allows for a
1790 hand optimized version of the type
1791 constraint to be used when possible.
1792 - Any internally created type constraints
1793 now provide an optimized version as well.
1795 0.15 Sun. Nov. 5, 2006
1797 This version of Moose *must* have Class::MOP 0.36 in order
1798 to work correctly. A number of small internal tweaks have
1799 been made in order to be compatible with that release.
1801 * Moose::Util::TypeConstraints
1802 - added &unimport so that you can clean out
1803 your class namespace of these exported
1806 * Moose::Meta::Class
1807 - fixed minor issue which occasionally
1808 comes up during global destruction
1810 - moved Moose::Meta::Method::Overriden into
1814 - moved Moose::Meta::Role::Method into
1817 * Moose::Meta::Attribute
1818 - changed how we do type checks so that
1819 we reduce the overall cost, but still
1822 - moved accessor generation methods to
1823 Moose::Meta::Method::Accessor to
1824 conform to the API changes from
1827 * Moose::Meta::TypeConstraint
1828 - changed how constraints are compiled
1829 so that we do less recursion and more
1830 iteration. This makes the type check
1832 - moved Moose::Meta::TypeConstraint::Union
1835 * Moose::Meta::Method::Accessor
1836 - created this from methods formerly found in
1837 Moose::Meta::Attribute
1839 * Moose::Meta::Role::Method
1840 - moved this from Moose::Meta::Role
1842 * Moose::Meta::Method::Overriden
1843 - moved this from Moose::Meta::Class
1845 * Moose::Meta::TypeConstraint::Union
1846 - moved this from Moose::Meta::TypeConstraint
1848 0.14 Mon. Oct. 9, 2006
1850 * Moose::Meta::Attribute
1851 - fixed lazy attributes which were not getting
1852 checked with the type constraint (thanks ashley)
1853 - added tests for this
1854 - removed the over-enthusiastic DWIMery of the
1855 automatic ArrayRef and HashRef defaults, it
1856 broke predicates in an ugly way.
1857 - removed tests for this
1859 0.13 Sat. Sept. 30, 2006
1861 This version of Moose *must* have Class::MOP 0.35 in order
1862 to work correctly. A number of small internal tweaks have
1863 been made in order to be compatible with that release.
1866 - Removed the use of UNIVERSAL::require to be a better
1867 symbol table citizen and remove a dependency
1868 (thanks Adam Kennedy)
1870 **~~ removed experimental & undocumented feature ~~**
1871 - commented out the 'method' and 'self' keywords, see the
1872 comments for more info.
1875 - added a FAQ and WTF files to document frequently
1876 asked questions and common problems
1878 * Moose::Util::TypeConstraints
1879 - added GlobRef and FileHandle type constraint
1880 - added tests for this
1882 * Moose::Meta::Attribute
1883 - if your attribute 'isa' ArrayRef of HashRef, and you have
1884 not explicitly set a default, then make the default DWIM.
1885 This will also work for subtypes of ArrayRef and HashRef
1887 - you can now auto-deref subtypes of ArrayRef or HashRef too.
1888 - new test added for this (thanks to ashley)
1891 - added basic support for runtime role composition
1892 but this is still *highly experimental*, so feedback
1893 is much appreciated :)
1894 - added tests for this
1896 * Moose::Meta::TypeConstraint
1897 - the type constraint now handles the coercion process
1898 through delegation, this is to support the coercion
1901 * Moose::Meta::TypeConstraint::Union
1902 - it is now possible for coercions to be performed
1904 - added tests for this (thanks to konobi)
1906 * Moose::Meta::TypeCoercion
1907 - properly capturing error when type constraint
1911 - Scalar::Util 1.18 is bad on Win32, so temporarily
1912 only require version 1.17 for Win32 and cygwin.
1913 (thanks Adam Kennedy)
1915 0.12 Sat. Sept. 1, 2006
1917 - Recipe5 (subtypes & coercion) has been written
1920 - fixed "bad meta" error message to be more descriptive
1921 - fixed &unimport to not remove the &inner and &super
1922 keywords because we need to localize them.
1923 - fixed number of spelling/grammer issues, thanks Theory :)
1925 **~~ experimental & undocumented feature ~~**
1926 - added the method and self keywords, they are basically
1927 just sugar, and they may not stay around.
1930 - added &dump method to easily Data::Dumper
1933 * Moose::Meta::TypeConstraint
1934 - added the &is_a_type_of method to check both the current
1935 and the subtype of a method (similar to &isa with classes)
1938 - this is now a subclass of Class::MOP::Module, and no longer
1939 creates the _role_meta ugliness of before.
1940 - fixed tests to reflect this change
1942 0.11 Wed. July 12, 2006
1944 - added an &unimport method to remove all the keywords
1945 that Moose will import, simply add 'no Moose' to the
1946 bottom of your class file.
1949 - fixed some test failures caused by a forgotten test
1952 0.10 Thurs. July 6, 2006
1954 - improved error message when loading modules so
1955 it is less confusing when you load a role.
1956 - added &calculate_all_roles method to
1957 Moose::Meta::Class and Moose::Meta::Role
1960 This module has been tested against Class::MOP 0.30
1961 but it does not yet utilize the optimizations
1962 it makes available. Stay tuned for that ;)
1964 0.09_03 Fri. June 23, 2006
1965 ++ DEVELOPER RELEASE ++
1967 - 'use strict' and 'use warnings' are no longer
1968 needed in Moose classes, Moose itself will
1969 turn them on for you.
1970 - added tests for this
1971 - moved code from exported subs to private methods
1972 in Moose::Meta::Class
1975 - as with Moose, strict and warnings are
1976 automatically turned on for you.
1977 - added tests for this
1980 - now handles an edge case for override errors
1981 - added tests for this
1982 - added some more edge case tests
1984 0.09_02 Tues. May 16, 2006
1985 ++ DEVELOPER RELEASE ++
1987 - added prototypes to the exported subs
1991 - added prototypes to the exported subs
1994 * Moose::Util::TypeConstraints
1995 - cleaned up prototypes for the subs
1998 0.09_01 Fri. May 12, 2006
1999 ++ DEVELOPER RELEASE ++
2000 - This release works in combination with
2001 Class::MOP 0.29_01, it is a developer
2002 release because it uses the a new
2003 instance sub-protocol and a fairly
2004 complete Role implementation. It has
2005 not yet been optimized, so it slower
2006 the the previous CPAN version. This
2007 release also lacks good updated docs,
2008 the official release will have updated docs.
2011 - refactored the keyword exports
2012 - 'with' now checks Role validaity and
2013 accepts more than one Role at a time
2014 - 'extends' makes metaclass adjustments as
2015 needed to ensure metaclass compatibility
2018 - refactored the keyword exports
2019 - 'with' now checks Role validaity and
2020 accepts more than one Role at a time
2022 * Moose::Util::TypeConstraints
2023 - added the 'enum' keyword for simple
2024 string enumerations which can be used as
2026 - see example of usage in t/202_example.t
2029 - more careful checking of params to new()
2032 - much work done on the role composition
2033 - many new tests for conflict detection
2034 and composition edge cases
2035 - not enough documentation, I suggest
2036 looking at the tests
2038 * Moose::Meta::Instance
2039 - added new Instance metaclass to support
2040 the new Class::MOP instance protocol
2042 * Moose::Meta::Class
2043 - some small changes to support the new
2045 - some small additions to support Roles
2047 * Moose::Meta::Attribute
2048 - some improvements to the accessor generation code
2050 - some small changes to support the new
2052 - (still somewhat) experimental delegation support
2053 with the 'handles' option
2054 - added several tests for this
2055 - no docs for this yet
2057 0.05 Thurs. April 27, 2006
2059 - keywords are now exported with Sub::Exporter
2060 thanks to chansen for this commit
2061 - has keyword now takes a 'metaclass' option
2062 to support custom attribute meta-classes
2063 on a per-attribute basis
2064 - added tests for this
2065 - the 'has' keyword not accepts inherited slot
2066 specifications (has '+foo'). This is still an
2067 experimental feature and probably not finished
2068 see t/038_attribute_inherited_slot_specs.t for
2069 more details, or ask about it on #moose
2070 - added tests for this
2073 - keywords are now exported with Sub::Exporter
2075 * Moose::Utils::TypeConstraints
2076 - reorganized the type constraint hierarchy, thanks
2077 to nothingmuch and chansen for his help and advice
2079 - added some tests for this
2080 - keywords are now exported with Sub::Exporter
2081 thanks to chansen for this commit
2083 * Moose::Meta::Class
2084 - due to changes in Class::MOP, we had to change
2085 construct_instance (for the better)
2087 * Moose::Meta::Attribute
2088 - due to changes in Class::MOP, we had to add the
2089 initialize_instance_slot method (it's a good thing)
2091 * Moose::Meta::TypeConstraint
2092 - added type constraint unions
2093 - added tests for this
2094 - added the is_subtype_of predicate method
2095 - added tests for this
2097 0.04 Sun. April 16th, 2006
2099 - Roles can now consume other roles
2100 - added tests for this
2101 - Roles can specify required methods now with
2102 the requires() keyword
2103 - added tests for this
2106 - ripped out much of it's guts ,.. much cleaner now
2107 - added required methods and correct handling of
2108 them in apply() for both classes and roles
2109 - added tests for this
2110 - no longer adds a does() method to consuming classes
2111 it relys on the one in Moose::Object
2112 - added roles attribute and some methods to support
2113 roles consuming roles
2115 * Moose::Meta::Attribute
2116 - added support for triggers on attributes
2117 - added tests for this
2118 - added support for does option on an attribute
2119 - added tests for this
2121 * Moose::Meta::Class
2122 - added support for attribute triggers in the
2124 - added tests for this
2127 - Moose no longer creates a subtype for your class
2128 if a subtype of the same name already exists, this
2129 should DWIM in 99.9999% of all cases
2131 * Moose::Util::TypeConstraints
2132 - fixed bug where incorrect subtype conflicts were
2134 - added test for this
2137 - this class can now be extended with 'use base' if
2138 you need it, it properly loads the metaclass class now
2139 - added test for this
2141 0.03_02 Wed. April 12, 2006
2143 - you must now explictly use Moose::Util::TypeConstraints
2144 it no longer gets exported for you automatically
2147 - new() now accepts hash-refs as well as key/value lists
2148 - added does() method to check for Roles
2149 - added tests for this
2151 * Moose::Meta::Class
2152 - added roles attribute along with the add_role() and
2154 - added tests for this
2157 - now adds a does() method to consuming classes
2158 which tests the class's hierarchy for roles
2159 - added tests for this
2161 0.03_01 Mon. April 10, 2006
2163 - added new Role recipe (no content yet, only code)
2166 - added 'with' keyword for Role support
2167 - added test and docs for this
2168 - fixed subtype quoting bug
2169 - added test for this
2173 - added test and docs
2175 * Moose::Util::TypeConstraints
2176 - added the message keyword to add custom
2177 error messages to type constraints
2180 - the meta role to support Moose::Role
2181 - added tests and docs
2183 * Moose::Meta::Class
2184 - moved a number of things from Moose.pm
2185 to here, they should have been here
2188 * Moose::Meta::Attribute
2189 - moved the attribute option macros here
2190 instead of putting them in Moose.pm
2192 * Moose::Meta::TypeConstraint
2193 - added the message attributes and the
2195 - added tests and docs for this
2197 0.03 Thurs. March 30, 2006
2199 - added the Moose::Cookbook with 5 recipes,
2200 describing all the stuff Moose can do.
2203 - fixed an issue with &extends super class loading
2204 it now captures errors and deals with inline
2205 packages correctly (bug found by mst, solution
2207 - added super/override & inner/augment features
2208 - added tests and docs for these
2211 - BUILDALL now takes a reference of the %params
2212 that are passed to &new, and passes that to
2215 * Moose::Util::TypeConstraints
2216 - Type constraints now survive runtime reloading
2217 - added test for this
2219 * Moose::Meta::Class
2220 - fixed the way attribute defaults are handled
2221 during instance construction (bug found by chansen)
2223 * Moose::Meta::Attribute
2224 - read-only attributes now actually enforce their
2225 read-only-ness (this corrected in Class::MOP as
2228 0.02 Tues. March 21, 2006
2230 - many more tests, fixing some bugs and
2232 - &extends now loads the base module with
2234 - added UNIVERSAL::require to the
2237 - each new Moose class will also create
2238 and register a subtype of Object which
2239 correspond to the new Moose class.
2240 - the 'isa' option in &has now only
2241 accepts strings, and will DWIM in
2244 * Moose::Util::TypeConstraints
2245 - added type coercion features
2246 - added tests for this
2247 - added support for this in attributes
2248 and instance construction
2250 - type construction no longer creates a
2251 function, it registers the type instead.
2252 - added several functions to get the
2256 - BUILDALL and DEMOLISHALL were broken
2257 because of a mis-named hash key, Whoops :)
2259 * Moose::Meta::Attribute
2260 - adding support for coercion in the
2261 autogenerated accessors
2263 * Moose::Meta::Class
2264 - adding support for coercion in the
2265 instance construction
2267 * Moose::Meta::TypeConstraint
2268 * Moose::Meta::TypeCoercion
2269 - type constraints and coercions are now
2270 full fledges meta-objects
2272 0.01 Wed. March 15, 2006
2273 - Moooooooooooooooooose!!!