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