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