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