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