cleaning up Changes and docs
[gitmo/Class-MOP.git] / Changes
diff --git a/Changes b/Changes
index 70fd924..405872f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,8 +1,350 @@
 Revision history for Perl extension Class-MOP.
 
-0.06 
+0.35
+
+    * Class::MOP
+      - non-generated accessors are no longer 
+        copied, but instead are aliased from 
+        the originals
+      - added Class::MOP::Method (and its subclasses) 
+        to the bootstrap
+        - adjusted tests for this
+      - added the Class::MOP::Instance attributes
+        to the bootstrap
+      - bootstrap no longer re-compiles accessors
+        so as to keep the MOP compile-time fast
+    
+    * Class::MOP::Method
+      *** API CHANGE ***
+      - methods are no longer blessed CODE refs
+        but are actual objects which can be CODE-ified
+        - adjusted tests to compensate
+        - adjusted docs for this        
+
+    * Class::MOP::Class
+      - changed how methods are dealt with to 
+        encapsulate most of the work into the 
+        &get_method_map method
+      - made several adjustments for the change
+        in Class::MOP::Method
+      - &add_attribute now checks if you are adding 
+        a duplicate name, and properly removes the 
+        old one before installing the new one
+        - added tests for this
+        - adjusted docs for this
+    
+    * Class::MOP::Class::Immutable
+      - added caching of &get_method_map
+      - fixed issue with &get_package_symbol
+      - cleaned up the methods that die (patch by David Wheeler)
+    
+    * Class::MOP::Package
+      - added filtering capabilities to 
+        &list_all_package_symbols
+
+0.34 Sat. Aug. 26, 2006
+    * Class::MOP::Class
+      - added the %:methods attribute, which like
+        the $:version and such just actually goes 
+        to the symbol table to get it's stuff. 
+        However, it makes the MOP more complete.
+     ** API CHANGE **
+      - The &create method now requires that all 
+        but the package name now is passed in as 
+        named parameters. See docs for more info.
+        - updated docs and tests for this
+        
+    * Class::MOP::Object
+      - added &dump method to easily Data::Dumper 
+        an object
+        
+    * Class::MOP
+      - cleaned up the initialization of attributes 
+        which do not store things in the instance 
+      - added the %:methods attribute definition to
+        the bootstrap
+        
+    ~ lots of misc. test cleanup
+
+0.33 Sat. Aug. 19, 2006
+    * Class::MOP::Class
+      - moved the metaclass cache out of here 
+        and it is now in Class::MOP itself.
+        
+    * Class::MOP
+      - moved all the metaclass cache stuff here
+        - fixed all tests for this
+
+    * Class::MOP::Attribute
+      - reference values (other than CODE refs) 
+        are no longer allowed for defaults
+        - added tests for this
+    
+    * Class::MOP::Package
+      - fixed an issue with perl 5.8.1 and how it deals 
+        with symbol tables. The namespace hash is now 
+        always reloaded from the symbol table. 
+
+    ~ lots of misc. documentation cleanup
+
+0.32 Sat. Aug. 12, 2006
+    + added Class::MOP::Object so that the 
+      metamodel is more complete (and closer
+      to what Perl 6 will probably be).
+
+    * Class::MOP::Package
+      - refactored entire class, this is now 
+        the primary gateway between the metaclass
+        and the Perl 5 symbol table
+        - added many tests for this
+      - this class is now a subclass of 
+        Class::MOP::Object
+        - added some tests to reflect this
+        
+    * Class::MOP::Class
+      - refactored all symbol table access to 
+        use Class::MOP::Package methods instead
+        
+    * Class::MOP::Module
+      - adding the $:version attribute in the bootstrap
+        so that Module has a version as an attribute
+        - see comment in Class::MOP for details
+      - added the $:authority attribute to this module 
+        as well as an &identifier method, to bring us 
+        ever closer to Perl 6 goodness 
+        - I have added $AUTHORITY to all the modules 
+        - added tests for this
+      
+    * Class::MOP::Instance
+      - added &deinitialize_slot for removing slots 
+        from an instance
+        - added tests for this      
+      
+    * Class::MOP::Attribute 
+      - added support for &deinitialize_slot for removing
+        slots from an instance
+        - added tests for this
+
+0.31 Sat. July 15, 2006
+
+    * Class::MOP::Class
+      - added &find_method_by_name to locate a method
+        anywhere within the class hierarchy   
+        
+    * Class::MOP::Attribute
+      - added &set_value and &get_value for getting 
+        the value of the attribute for a particular 
+        instance.
+
+0.30 Wed. July 5, 2006
+    ---------------------------------------
+    This is the first version of Class::MOP 
+    to introduce the immutable features which
+    will be used for optimizating the MOP. 
+    This support should still be considered
+    experimental, but moving towards stability.
+    ---------------------------------------
+    
+    * Created Class::MOP::Class::Immutable  
+    
+    * Created the Class::MOP::Package and 
+      Class::MOP::Module classes to more 
+      closely conform to Perl 6's meta-model
+
+    * Class::MOP::Class
+      - now inherits from Class::MOP::Module
+      - several methods moved to ::Module and 
+        ::Package and now inherited
+        - added tests for this
+      
+    * Class::MOP::Instance
+      - added an is_inlinable method to allow other 
+        classes to check before they attempt to optimize.
+      - added an inline_create_instance to inline 
+        instance creation (of course) 
+        
+    ** API CHANGE **
+      - the Class::MOP::Class::*_package_variable 
+        methods are all now methods of Class::MOP::Package
+        and called *_package_symbol instead. This is 
+        because they are now more general purpose symbol 
+        table manipulation methods.        
+
+0.29_02 Thurs. June 22, 2006
+    ++ DEVELOPER RELEASE ++
+    * Class::MOP::Class
+      - small change in &create so that it behaves 
+        properly when inherited
+      - small fix to &clone_instance
+
+0.29_01 Fri. May 12, 2006
+    ++ DEVELOPER RELEASE ++
+      - This release works in combination with 
+        Moose 0.09_01, it is a developer release
+        because it introduces a new instance 
+        sub-protocol and has not yet been 
+        optimized.  
+
+    * Class::MOP::Class
+      - anon-classes are now properly garbage collected
+        - added tests for this 
+      - improved method modifier wrapping 
+
+    * Class::MOP::Instance
+      - added new instance protocol
+        - added tests for this
+      - changed all relevant modules and examples
+        - Class::MOP::Class
+        - Class::MOP::Attribute
+        - examples/*
+
+    * metaclass
+      - you no longer need to specify the metaclass
+        itself, if it is not there, Class::MOP::Class
+        is just assumed
+        - updated tests for this
+
+    * examples/
+      - added ArrayBasedStorage example to show 
+        instance storage using ARRAY refs instead of
+        HASH refs. 
+        - added tests for this
+      - InsideOutClass is totally revised using the 
+        new instance protocol
+        - added more tests for this
+
+0.26 Mon. April 24, 2006
+    * Class::MOP::Class
+      - added find_attribute_by_name method
+        - added tests and docs for this
+      - some small optimizations
+
+    * Class::MOP::Attribute
+      - some small optimizations
+
+0.25 Thurs. April 20, 2006
+    * Class::MOP::Class
+      - added create_anon_class for creating anonymous classes
+        - added tests for this
+      - added get_all_metaclasses, get_all_metaclass_names
+        and get_all_metaclass_instances method to allow
+        access to all the cached metaclass objects.
+      - attribute slot initialization is now the responsibility
+        of the attribute itself, and construct_instance now 
+        delegates appropriately
+        
+    * Class::MOP::Attribute
+      - attribute slot initialization is now the responsibility
+        of the attribute itself, so we added a method for it
+        called initialize_instance_slot
+    
+    * examples/
+      - adjusted all the examples to use the new attribute 
+        initialize_instance_slot method 
+
+0.24 Tues. April 11, 2006
+    * Class::MOP::Class
+      - cleaned up how the before/after/around method 
+        modifiers get named with Sub::Name
+
+0.23 Thurs. March 30, 2006
+       * Class::MOP::Class
+         - fixed the way attribute defaults are handled 
+           during instance construction (bug found by chansen)
+           
+       * Class::MOP::Attribute
+         - read-only accessors ('reader') will now die if 
+           passed more than one argument (attempting to write
+           to them basically)
+             - added tests for this
+             - adjusted all /example files to comply 
+
+0.22 Mon. March 20, 2006
+    * Class::MOP::Class
+      - localized $@ in the *_package_variable functions
+        because otherwise, it does ugly things in Moose.
+          - added test case for this
+
+0.21 Wed. March 15, 2006
+    * Class::MOP::Class
+      - fixed issue where metaclasses are reaped from 
+        our cache in global destruction, and so are not
+        available in DESTORY calls
+
+0.20 Thurs. March 2, 2006
+    - removed the dependency for Clone since 
+      we no longer to deep-cloning by default.
+    
+    * Class::MOP::Method
+      - added &package_name, &name and 
+        &fully_qualified_name methods, some of 
+        which were formerly private subs in 
+        Class::MOP::Class
+      
+    * Class::MOP::Method::Wrapped
+      - allows for a method to be wrapped with 
+        before, after and around modifiers 
+          - added tests and docs for this feature
+
+    * Class::MOP::Class
+      - improved &get_package_symbol
+          - &version and &superclasses now use it
+      - methods are now blessed into Class::MOP::Method
+        whenever possible
+      - added methods to install CLOS-style method modifiers 
+         - &add_before_method_modifier
+         - &add_after_method_modifier         
+         - &add_around_method_modifier
+             - added tests and docs for these
+      - added &find_next_method_by_name which finds the 
+        equivalent of SUPER::method_name
+
+0.12 Thurs. Feb 23, 2006
+    - reduced the dependency on B, no need to always 
+      have the latest
+
+    * examples/
+      - added docs to the C3 method dispatch order test
+      - fixed missing Algorithm::C3 dependency by making 
+        the test skip if it is not installed
+
+0.11 Mon Feb. 20, 2006
+    * examples/
+      - added example of changing method dispatch order to C3
+      
+    * Class::MOP::Class
+      - changed how clone_instance behaves, it now only does a
+        shallow clone (see docs for more details)
+        - added docs and tests
+
+0.10 Tues Feb. 14, 2006
+    ** This release was mostly about writing more tests and 
+       cleaning out old and dusty code, the MOP should now 
+       be considered "ready to use".
+
+    - adding more tests to get coverage up a little higher,
+      mostly testing errors and edge cases.
+      - test coverage is now at 99%
+      
+    * Class::MOP
+      - no longer optionally exports to UNIVERSAL::meta or
+        creates a custom metaclass generator, use the 
+        metaclass pragma instead.
+
+    * Class::MOP::Class  
+      - fixed a number of minor issues which came up in the 
+        error/edge-case tests
+        
+    * Class::MOP::Attribute 
+      - fixed a number of minor issues which came up in the 
+        error/edge-case tests        
+     
+    * examples/
+      - fixing the AttributesWithHistory example, it was broken.
+
+0.06 Thurs Feb. 9, 2006
     * metaclass
-      - adding new metaclass pragma to make assiging the 
+      - adding new metaclass pragma to make setting up the 
         metaclass a little more straightforward
         
     * Class::MOP
@@ -25,9 +367,16 @@ Revision history for Perl extension Class-MOP.
       - added &clone_instance method which does a deep clone
         of the instance structure created by &construct_instance
           - added docs & tests for this
+          - added Clone as a dependency
       - added &new_object and &clone_object convience methods to
         return blessed new or cloned instances
+          - they handle Class::MOP::Class singletons correctly too
           - added docs & tests for this
+      - cleaned up the &constuct_class_instance so that it behaves
+        more like &construct_instance (and managed the singletons too)
+      - added the &check_metaclass_compatibility method to make sure
+        that metaclasses are upward and downward compatible.
+          - added tests and docs for this
           
     * examples/
       - adjusting code to use the &Class::MOP::Class::meta