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