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