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