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