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