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