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