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