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