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