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