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