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