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