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