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