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