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