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