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