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