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