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