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