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