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