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