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