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