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