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