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