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