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