adding to changelog and changing versions
[gitmo/Class-MOP.git] / Changes
diff --git a/Changes b/Changes
index 2c661b3..3f8f90f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,458 @@
 Revision history for Perl extension Class-MOP.
 
+0.53
+    * Class::MOP::Instance
+      - added get_all_slot_values method (Sartak)
+        - added tests for this (Sartak)
+        
+    * Class::MOP::Class
+      Class::MOP::Method::Constructor
+      Class::MOP::Attribute
+        - making init_arg accept an undefined value
+          to indicate that no constructor args can 
+          be passed (thanks to nothingmuch)
+          - added tests for this
+          
+    * Class::MOP.
+        - making this use the new init_arg => undef
+          feature instead of the silly hack from 
+          before (thanks to nothingmuch)
+
+0.52 Tues. Jan. 22, 2008
+    * Class::MOP::Class
+      - fixed bug in rebless_instance 
+        (discovered by ash)
+
+    * Class::MOP::Method::Constructor
+      - removed assumptions about the existence of 
+        a &meta method
+
+0.51 Mon. Jan. 14, 2008
+    ~~~ some misc. doc. fixes ~~~
+    ~~ updated copyright dates ~~
+    
+    * Class::MOP
+      - now sets the IS_RUNNING_ON_5_10 
+        constant so that we can take advantage
+        of some of the nice bits of 5.10
+    
+    * Class::MOP::Class
+      - uses the IS_RUNNING_ON_5_10 flag to 
+        optimize the &linearized_isa method 
+        and avoid the hack/check for circular
+        inheritence in &class_precedence_list 
+      - added rebless_instance method (Sartak)
+        - added tests for this
+    
+    * Class::MOP::Immutable 
+      - the immutable class now keeps track of 
+        the transformer which immutablized it
+
+    * Class::MOP::Instance
+      - added rebless_instance_structure method (Sartak)
+        - added tests for this
+
+0.50 Fri. Dec. 21, 2007
+    * Class::MOP::Class
+      - fixed bug in immutable to make sure that 
+        transformation arguments are saved 
+        correctly (mst)
+        - added tests for this
+        
+    * Class::MOP::Immutable
+      - fixed a bug (see above)
+      
+    * Class::MOP::Attribute
+      - some doc updates
+
+0.49 Fri. Dec. 14, 2007
+    !! Class::MOP now loads 2 x faster  !!
+    !! with XS speedups (thanks konobi) !!
+        
+    * Class::MOP
+      - removed the dependency on B
+      - added two XS functions (thanks konobi)
+        - get_code_info($code) which replaces all
+          the B fiddling we were doing with
+          faster/leaner XS level fiddling
+        - check_package_cache_flag($pkg_name) which 
+          returns the PL_sub_generation variable to 
+          be used to help manage method caching.
+          
+          NOTE: 
+          In 5.10 or greater this will actually 
+          use the mro::get_pkg_gen instead to give 
+          even more accurate caching information. 
+          blblack++ for that stuff :)
+          
+    * Class::MOP::Class
+      - added the &subclasses method (thanks rlb)
+      - added the update_package_cache_flag and 
+        reset_package_cache_flag which help keep 
+        track of when we need to re-fetch the 
+        method map. 
+      - Several small improvements to take advantage
+        of the new method map caching features
+
+0.48 Mon. Nov. 26, 2007
+    * Class::MOP::Attribute
+      - fixed get_read/write_method to handle the 
+        HASH ref case, which makes the 
+        get_read/write_method_ref handle it too.
+        - added more tests for this
+
+0.47 Sat. Nov. 24, 2007
+    * Class::MOP::Attribute
+      - fixed misspelling in get_write_method_ref
+        - added more tests for this
+
+0.46 Fri. Nov. 23, 2007
+    * Class::MOP::Class
+      - added the linearized_isa method instead of constantly 
+        pruning duplicate classes (this will be even more 
+        useful in the 5.10-compat version coming soon)
+    
+    * Class::MOP::Attribute
+      - added the get_read_method_ref and get_write_method_ref
+        methods which allow you to retrieve a CODE ref which 
+        can always be used to read or write an attribute.
+
+0.45 Thurs. Nov. 13, 2007
+    * Class::MOP::Attribute
+      - Fix error message on confess (groditi)
+
+0.44 Thurs. Nov. 13, 2007
+    - Apparently I didn't make dist correctly (groditi)
+
+0.43 Thurs. Nov. 13, 2007
+    * Class::MOP
+      - Add support for the 'builder' attribute (groditi)
+
+    * Class::MOP::Class
+      - optimise metaclass-already-exists check in 
+        construct_class_instance (groditi)
+      - duplicate check into initialize to save a 
+        call through (groditi)
+
+    * Class::MOP::Attribute
+      - Add support for the 'builder' attribute (groditi)
+      - Make predicates check for the existence of a value, not whether 
+        it is defined (groditi)
+
+    * Class::MOP::Instance
+      - Make predicates check for the existence of a value, not whether 
+        it is defined (groditi)
+
+    * Class::MOP::Method::Accessor 
+      - made this a subclass of Class::MOP::Method::Generated
+        - removed the relevant attributes
+
+    * Class::MOP::Method::Constructor
+      - fixed the cached values we had to be more sane
+      - made this a subclass of Class::MOP::Method::Generated
+      - fixed generated constructor so it properly handles 
+        subclasses now.
+        - added tests for this
+      - added the option to allow for both inlined and 
+        non-inlined constructors.
+      - Update inlined methods for builder and predicate changes (groditi)
+
+    * Class::MOP::Method::Generated
+      - added this class as an abstract base for the 
+        Class::MOP::Method::{Constructor,Accessor} classes
+        - added tests for this
+
+    *t/
+      - Alter tests (005, 014 020, 021) for new builder addition (groditi)
+      - Tests for new predicate behavior (and corrections to old tests) (groditi)
+
+    *examples/
+      - Update ArrayRef based class example to work with predicate changes
+
+0.42 Mon. July 16, 2007
+    !!! Horray for mst, he fixed it !!!
+
+    * Class::MOP::Package
+      - alter symbol table handling to deal with 5.8.x and 5.9.x
+      
+    * t/
+      - Get rid of the crappy workaround from 0.40/41
+
+0.41 Sun. July 15, 2007
+    * t/
+        Arghh!!! My TODO test didn't work, so I handle
+        it manually now so that people can use this 
+        with 5.9.5/bleadperl without issue.
+
+0.40 Tues, July 3, 2007
+    * t/
+      ~ marked a test in 003_methods.t as TODO 
+        for perl 5.9.5 (this test is irrelvant to 
+        the module functioning on 5.9.5 for the most 
+        part anyway)
+
+0.39 Mon. June 18, 2007
+    * Class::MOP::Immutable
+      - added make_metaclass_mutable + docs (groditi)
+      - removed unused variable
+      - added create_immutable_transformer
+        necessary for sane overloading of immutable behavior
+         - tests for this (groditi) 
+
+    * Class::MOP::Class
+      - Immutability can now be undone,
+        added make_mutable + tests + docs (groditi)
+      - Massive changes to the way Immutable is done
+        for details see comments next to make_immutable
+        This fixes a bug where custom metaclasses broke
+        when made immutable. We are now keeping one immutable 
+        metaclass instance per metaclass instead of just one 
+        to prevent isa hierarchy corruption. Memory use will go
+        up, but I suspect it will be neglible.
+         - New tests added for this behavior.  (groditi)
+
+0.38 Thurs. May 31, 2007
+    ~~ More documentation updates ~~
+    
+    * Class::MOP::Package
+      - we now deal with stub methods properly
+        - added tests for this
+      - fixed some tests failing on 5.9.5 (thanks blblack)
+        
+    * Class::MOP::Attribute
+      - added get_read_method and get_write_method
+        thanks to groditi for this code, tests 
+        and docs.
+        - added tests and POD for this
+    
+    * Class::MOP::Class
+      - fixed RT issue #27329, clone object now 
+        handles undef values correctly.
+        - added tests for this
+      - Corrected anon-class handling so that they 
+        will not get reaped when instances still 
+        exist which need to reference them. This is 
+        the correct behavior, hopefully this is an 
+        obscure enough feature that there are not too 
+        many work arounds out in the wild.
+        - added tests for this by groditi   
+        - updated docs to explain this
+
+    * metaclass
+      - load custom metaclasses automatically (thanks groditi)
+        - added tests for this behavior
+
+0.37 Sat. March 10, 2007
+    ~~ Many, many documentation updates ~~
+    
+    * Class::MOP
+      - added &load_class and &is_class_loaded 
+        - added tests and docs for these
+
+    * Class::MOP::Attribute
+      - default now checks the instance with defined to 
+        avoid setting off bool-overloads (found by Carl Franks)
+
+0.37_002
+    * /t 
+      - bad name in a test, causing meaningless failuress. 
+        No other changes.
+
+0.37_001
+    
+    ~~ GLOBAL CHANGES ~~
+    - All attribute names are now consistent and follow Perl 6 
+      style (prefixed with the sigil, and ! as the twigil for 
+      private attrs). This should not affect any code, unless 
+      you broke encapsulation, in which case, it is your problem 
+      anyway.
+      
+    !! Class::MOP::Class::Immutable has been removed
+    
+    * Class::MOP::Method::Constructor
+      - this has been moved out of Class::MOP::Class::Immutable 
+        and is a proper subclass of Class::MOP::Method now.
+        
+    * Class::MOP::Class
+      - this module now uses Class::MOP::Immutable for the 
+        immutable transformation instead of 
+        Class::MOP::Class::Immutable.
+        
+    + Class::MOP::Immutable 
+      - this module now controls the transformation from a mutable 
+        to an immutable version of the class. Docs for this will 
+        be coming eventually.
+    
+
+0.36 Sun. Nov. 5, 2006
+    * Class::MOP::Class
+      - added a few 'no warnings' lines to keep annoying 
+        (and meaningless) warnings from chirping during 
+        global destruction.
+          
+    * Class::MOP
+      - some more bootstrapping is now done on the new 
+        classes
+    
+    * Class::MOP::Class::Immutable
+      *** API CHANGE ***    
+      - constructor generation is now handled by 
+        the Class::MOP::Method::Constructor class
+     
+    * Class::MOP::Method::Constructor
+      - created this to handle constructor generation 
+        in Class::MOP::Class::Immutable
+    
+    * Class::MOP::Attribute
+      *** API CHANGE ***    
+      - attributes now delegate to the 
+        Class::MOP::Method::Accessor to generate 
+        accessors
+    
+    * Class::MOP::Method::Accessor
+      - all accessor generation functions from 
+        Class::MOP::Attribute have been moved here
+
+0.35 Sat. Sept. 30, 2006
+
+    * scripts/class_browser.pl
+      - initial prototype of a class browser, more 
+        on this to come. Comments and patches are 
+        very much welcome.
+
+    * Class::MOP
+      - All Class::MOP::* accessors are no longer 
+        re-generated in the bootstrap, instead 
+        they are aliased from the originals
+        - fixed tests to reflect
+      - added Class::MOP::Method (and its subclasses) 
+        to the bootstrap
+        - adjusted tests for this
+      - added the Class::MOP::Instance attributes
+        to the bootstrap
+    
+    * 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 
@@ -293,4 +746,4 @@ Revision history for Perl extension Class-MOP.
         - adding POD documentation to the examples
 
 0.01 Thurs Feb. 2, 2006
-    - Initial release
\ No newline at end of file
+    - Initial release