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