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