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