lib/Moose.pm:
[gitmo/Moose.git] / Changes
diff --git a/Changes b/Changes
index 09c368d..4ee00f0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,458 @@
 Revision history for Perl extension Moose
 
+    * Moose
+      - (Docs) referenced Moose::Util::TypeConstraints under 'isa' in 'has'
+      for how to define a new type.
+
+0.24 Tues. July 3, 2007
+    ~ Some doc updates/cleanup ~
+
+    * Moose::Meta::Attribute
+      - added support for roles to be given as parameters 
+        to the 'handles' option.
+        - added tests and docs for this
+      - the has '+foo' attribute form now accepts changes to 
+        the lazy option, and the addition of a handles option
+        (but not changing the handles option)
+        - added tests and docs for this
+
+    * Moose::Meta::Role
+      - required methods are now fetched using find_method_by_name
+        so that required methods can come from superclasses
+        - adjusted tests for this
+
+0.23 Mon. June 18, 2007
+    * Moose::Meta::Method::Constructor
+      - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
+    * Moose::Meta::Class
+      - Modify make_immutable to work with the new Class::MOP immutable
+        mechanism + POD + very basic test (groditi)
+    * Moose::Meta::Attribute
+      - Fix handles to use goto() so that caller() comes out properly on 
+        the other side (perigrin)
+
+0.22 Thurs. May 31, 2007
+    * Moose::Util::TypeConstraints
+      - fix for prototype undeclared issue when Moose::Util::TypeConstraints 
+        loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
+        prototypes for functions
+      - added the ClassName type constraint, this checks for strings 
+        which will respond true to ->isa(UNIVERSAL). 
+        - added tests and docs for this
+      - subtyping just in name now works correctly by making the 
+        default for where be { 1 }
+        - added test for this 
+
+    * Moose::Meta::Method::Accessor
+      - coerce and lazy now work together correctly, thanks to 
+        merlyn for finding this bug
+        - tests added for this
+      - fix reader presedence bug in Moose::Meta::Attribute + tests
+
+    * Moose::Object
+      - Foo->new(undef) now gets ignored, it is assumed you meant to pass
+        a HASH-ref and missed. This produces better error messages then 
+        having it die cause undef is not a HASH.
+        - added tests for this
+
+0.21 Thursday, May 2nd, 2007
+    * Moose
+      - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
+      - modified unimport to remove super and inner along with the rest
+        - altered unimport tests to handle this
+
+    * Moose::Role
+      - altered super export to populate SUPER_SLOT
+
+    * Moose::Meta::Class
+      - altered augment and override modifier application to use *_SLOT
+        - modified tests for these to unimport one test class each to test
+
+    * Moose::Meta::Role
+      - fixed issue where custom attribute metaclasses
+        where not handled correctly in roles
+        - added tests for this
+    
+    * Moose::Meta::Class
+      - fixed issue where extending metaclasses with 
+        roles would blow up. Thanks to Aankhen`` for
+        finding this insidious error, and it's solution.
+        
+    ~~ lots of spelling and grammer fixes in the docs, 
+       many many thanks to rlb3 and Aankhen for these :)
+
+0.20 Friday, April 6th, 2007
+    >> I messed up the SKIP logic in one test
+       so this release is just to fix that.
+
+    * Moose
+      - 'has' now also accepts an ARRAY ref
+        to create multiple attrs (see docs)
+        (thanks to konobi for this)
+         - added tests and docs 
+
+0.19 Thurs. April 5th, 2007
+    ~~ More documentation updates ~~
+
+    * Moose::Util::TypeConstraints
+      - 'type' now supports messages as well
+        thanks to phaylon for finding this
+        - added tests for this
+      - added &list_all_type_constraints and 
+        &list_all_builtin_type_constraints
+        functions to facilitate introspection.
+    
+    * Moose::Meta::Attribute
+      - fixed regexp 'handles' declarations 
+        to build the list of delegated methods
+        correctly (and not override important 
+        things like &new) thanks to ashleyb 
+        for finding this
+        - added tests and docs for this
+      - added the 'documentation' attributes
+        so that you can actually document your 
+        attributes and inspect them through the 
+        meta-object.
+        - added tests and docs for this
+
+    * Moose::Meta::Class
+      - when loading custom attribute metaclasses
+        it will first look in for the class in the 
+        Moose::Meta::Attribute::Custom::$name, and 
+        then default to just loading $name.
+        - added tests and docs for this
+
+    * Moose::Meta::TypeConstraint
+      - type constraints now stringify to their names.
+        - added test for this
+
+    * misc.
+      - added tests to assure we work with Module::Refresh 
+      - added stricter test skip logic in the Moose POOP 
+        test, ask Rob Kinyon why.
+        - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
+
+0.18 Sat. March 10, 2007
+    ~~ Many, many documentation updates ~~
+
+    * misc.
+      - We now use Class::MOP::load_class to 
+        load all classes.    
+      - added tests to show types and subtypes 
+        working with Declare::Constraints::Simple
+        and Test::Deep as constraint engines.
+
+0.18_001
+    !! You must have Class::MOP 0.37_001  !!
+    !! for this developer release to work !!
+
+    This release was primarily adding the immutable
+    feature to Moose. An immutable class is one which 
+    you promise not to alter. When you set the class 
+    as immutable it will perform various bits of 
+    memoization and inline certain part of the code
+    (constructors, destructors and accessors). This 
+    minimizes (and in some cases totally eliminates)
+    one of Moose's biggest performance hits. This 
+    feature is not on by default, and is 100% optional.
+    It has several configurable bits as well, so you 
+    can pick and choose to your specific needs.
+    
+    The changes involved in this were fairly wide and 
+    highly specific, but 100% backwards compatible, so 
+    I am not going to enumerate them here. If you are 
+    truely interested in what was changed, please do 
+    a diff :)
+
+0.17 Tues. Nov. 14, 2006
+    * Moose::Meta::Method::Accessor
+      - bugfix for read-only accessors which 
+        are have a type constraint and lazy.
+        Thanks to chansen for finding it.
+
+0.16 Tues. Nov. 14, 2006
+    ++ NOTE ++
+    There are some speed improvements in this release, 
+    but they are only the begining, so stay tuned.
+    
+    * Moose::Object
+      - BUILDALL and DEMOLISHALL no longer get 
+        called unless they actually need to be.
+        This gave us a signifigant speed boost
+        for the cases when there is no BUILD or 
+        DEMOLISH method present.
+        
+    * Moose::Util::TypeConstraints
+    * Moose::Meta::TypeConstraint
+      - added an 'optimize_as' option to the 
+        type constraint, which allows for a
+        hand optimized version of the type 
+        constraint to be used when possible.
+      - Any internally created type constraints
+        now provide an optimized version as well.
+
+0.15 Sun. Nov. 5, 2006
+    ++ NOTE ++
+    This version of Moose *must* have Class::MOP 0.36 in order 
+    to work correctly. A number of small internal tweaks have 
+    been made in order to be compatible with that release.
+
+    * Moose::Util::TypeConstraints
+      - added &unimport so that you can clean out 
+        your class namespace of these exported 
+        keywords
+    
+    * Moose::Meta::Class
+      - fixed minor issue which occasionally 
+        comes up during global destruction 
+        (thanks omega)
+      - moved Moose::Meta::Method::Overriden into 
+        its own file.
+      
+    * Moose::Meta::Role      
+      - moved Moose::Meta::Role::Method into 
+        its own file.
+              
+    * Moose::Meta::Attribute
+      - changed how we do type checks so that 
+        we reduce the overall cost, but still 
+        retain correctness.
+       *** API CHANGE ***
+      - moved accessor generation methods to 
+        Moose::Meta::Method::Accessor to 
+        conform to the API changes from 
+        Class::MOP 0.36
+          
+    * Moose::Meta::TypeConstraint
+      - changed how constraints are compiled
+        so that we do less recursion and more
+        iteration. This makes the type check 
+        faster :)
+      - moved Moose::Meta::TypeConstraint::Union
+        into its own file
+    
+    * Moose::Meta::Method::Accessor
+      - created this from methods formerly found in 
+        Moose::Meta::Attribute
+    
+    * Moose::Meta::Role::Method
+      - moved this from Moose::Meta::Role
+          
+    * Moose::Meta::Method::Overriden
+      - moved this from Moose::Meta::Class
+      
+    * Moose::Meta::TypeConstraint::Union
+      - moved this from Moose::Meta::TypeConstraint
+
+0.14 Mon. Oct. 9, 2006
+
+    * Moose::Meta::Attribute
+      - fixed lazy attributes which were not getting 
+        checked with the type constraint (thanks ashley)
+        - added tests for this
+      - removed the over-enthusiastic DWIMery of the 
+        automatic ArrayRef and HashRef defaults, it 
+        broke predicates in an ugly way.
+        - removed tests for this
+
+0.13 Sat. Sept. 30, 2006
+    ++ NOTE ++
+    This version of Moose *must* have Class::MOP 0.35 in order 
+    to work correctly. A number of small internal tweaks have 
+    been made in order to be compatible with that release.
+
+    * Moose
+      - Removed the use of UNIVERSAL::require to be a better
+        symbol table citizen and remove a dependency 
+        (thanks Adam Kennedy)
+
+      **~~ removed experimental & undocumented feature ~~**
+      - commented out the 'method' and 'self' keywords, see the 
+        comments for more info.
+
+    * Moose::Cookbook
+      - added a FAQ and WTF files to document frequently 
+        asked questions and common problems
+        
+    * Moose::Util::TypeConstraints
+      - added GlobRef and FileHandle type constraint
+        - added tests for this
+        
+    * Moose::Meta::Attribute
+      - if your attribute 'isa' ArrayRef of HashRef, and you have
+        not explicitly set a default, then make the default DWIM.
+        This will also work for subtypes of ArrayRef and HashRef 
+        as well.
+      - you can now auto-deref subtypes of ArrayRef or HashRef too.
+        - new test added for this (thanks to ashley)
+        
+    * Moose::Meta::Role
+      - added basic support for runtime role composition
+        but this is still *highly experimental*, so feedback 
+        is much appreciated :)
+        - added tests for this
+
+    * Moose::Meta::TypeConstraint
+      - the type constraint now handles the coercion process
+        through delegation, this is to support the coercion 
+        of unions
+        
+    * Moose::Meta::TypeConstraint::Union
+      - it is now possible for coercions to be performed 
+        on a type union
+        - added tests for this (thanks to konobi)
+
+    * Moose::Meta::TypeCoercion
+      - properly capturing error when type constraint 
+        is not found
+
+    * Build.PL
+      - Scalar::Util 1.18 is bad on Win32, so temporarily
+        only require version 1.17 for Win32 and cygwin.
+        (thanks Adam Kennedy)        
+
+0.12 Sat. Sept. 1, 2006
+    * Moose::Cookbook
+      - Recipe5 (subtypes & coercion) has been written
+      
+    * Moose
+      - fixed "bad meta" error message to be more descriptive      
+      - fixed &unimport to not remove the &inner and &super  
+        keywords because we need to localize them.
+      - fixed number of spelling/grammer issues, thanks Theory :)
+      
+      **~~ experimental & undocumented feature ~~**
+      - added the method and self keywords, they are basically 
+        just sugar, and they may not stay around.
+        
+    * Moose::Object
+      - added &dump method to easily Data::Dumper 
+        an object
+        
+    * Moose::Meta::TypeConstraint
+      - added the &is_a_type_of method to check both the current
+        and the subtype of a method (similar to &isa with classes)
+
+    * Moose::Meta::Role
+      - this is now a subclass of Class::MOP::Module, and no longer
+        creates the _role_meta ugliness of before. 
+        - fixed tests to reflect this change
+    
+0.11 Wed. July 12, 2006
+    * Moose
+      - added an &unimport method to remove all the keywords
+        that Moose will import, simply add 'no Moose' to the 
+        bottom of your class file. 
+        
+    * t/
+      - fixed some test failures caused by a forgotten test 
+        dependency.
+
+0.10 Thurs. July 6, 2006
+    * Moose
+      - improved error message when loading modules so
+        it is less confusing when you load a role.
+      - added &calculate_all_roles method to 
+        Moose::Meta::Class and Moose::Meta::Role
+        
+    NOTE:
+    This module has been tested against Class::MOP 0.30
+    but it does not yet utilize the optimizations 
+    it makes available. Stay tuned for that ;)
+    
+0.09_03 Fri. June 23, 2006
+    ++ DEVELOPER RELEASE ++
+    * Moose
+      - 'use strict' and 'use warnings' are no longer
+         needed in Moose classes, Moose itself will 
+         turn them on for you.
+         - added tests for this
+      - moved code from exported subs to private methods
+        in Moose::Meta::Class
+         
+    * Moose::Role
+      - as with Moose, strict and warnings are 
+        automatically turned on for you.
+         - added tests for this        
+        
+    * Moose::Meta::Role
+      - now handles an edge case for override errors
+        - added tests for this
+      - added some more edge case tests
+
+0.09_02 Tues. May 16, 2006
+    ++ DEVELOPER RELEASE ++
+    * Moose
+      - added prototypes to the exported subs
+      - updated docs
+      
+    * Moose::Role
+      - added prototypes to the exported subs      
+      - updated docs
+      
+    * Moose::Util::TypeConstraints
+      - cleaned up prototypes for the subs      
+      - updated docs      
+
+0.09_01 Fri. May 12, 2006
+    ++ DEVELOPER RELEASE ++
+      - This release works in combination with 
+        Class::MOP 0.29_01, it is a developer 
+        release because it uses the a new 
+        instance sub-protocol and a fairly
+        complete Role implementation. It has 
+        not yet been optimized, so it slower
+        the the previous CPAN version. This 
+        release also lacks good updated docs, 
+        the official release will have updated docs.
+
+    * Moose 
+      - refactored the keyword exports
+        - 'with' now checks Role validaity and 
+          accepts more than one Role at a time
+        - 'extends' makes metaclass adjustments as 
+           needed to ensure metaclass compatability
+          
+    * Moose::Role
+      - refactored the keyword exports
+        - 'with' now checks Role validaity and 
+          accepts more than one Role at a time
+          
+    * Moose::Util::TypeConstraints
+      - added the 'enum' keyword for simple 
+        string enumerations which can be used as 
+        type constraints
+        - see example of usage in t/202_example.t
+        
+    * Moose::Object
+      - more careful checking of params to new()
+      
+    * Moose::Meta::Role
+      - much work done on the role composition
+        - many new tests for conflict detection 
+          and composition edge cases
+        - not enough documentation, I suggest 
+          looking at the tests    
+      
+    * Moose::Meta::Instance
+      - added new Instance metaclass to support 
+        the new Class::MOP instance protocol
+        
+    * Moose::Meta::Class
+      - some small changes to support the new 
+        instance protocol
+      - some small additions to support Roles
+        
+    * Moose::Meta::Attribute
+      - some improvements to the accessor generation code
+        by nothingmuch
+      - some small changes to support the new 
+        instance protocol
+      - (still somewhat) experimental delegation support 
+        with the 'handles' option
+        - added several tests for this
+        - no docs for this yet
+
 0.05 Thurs. April 27, 2006
     * Moose
       - keywords are now exported with Sub::Exporter
@@ -216,4 +669,4 @@ Revision history for Perl extension Moose
            full fledges meta-objects
 
 0.01 Wed. March 15, 2006
-    - Moooooooooooooooooose!!!
\ No newline at end of file
+    - Moooooooooooooooooose!!!