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