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