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