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