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