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