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