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