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