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