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