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