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