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