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