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