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