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