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