ChangeLog and adding yuval to authors everywhere
[gitmo/Class-MOP.git] / Changes
1 Revision history for Perl extension Class-MOP.
2
3 0.31 Sat. July 15, 2006
4
5     * Class::MOP::Class
6       - added &find_method_by_name to locate a method
7         anywhere within the class hierarchy   
8         
9     * Class::MOP::Attribute
10       - added &set_value and &get_value for getting 
11         the value of the attribute for a particular 
12         instance.
13
14 0.30 Wed. July 5, 2006
15     ---------------------------------------
16     This is the first version of Class::MOP 
17     to introduce the immutable features which
18     will be used for optimizating the MOP. 
19     This support should still be considered
20     experimental, but moving towards stability.
21     ---------------------------------------
22     
23     * Created Class::MOP::Class::Immutable  
24     
25     * Created the Class::MOP::Package and 
26       Class::MOP::Module classes to more 
27       closely conform to Perl 6's meta-model
28
29     * Class::MOP::Class
30       - now inherits from Class::MOP::Module
31       - several methods moved to ::Module and 
32         ::Package and now inherited
33         - added tests for this
34       
35     * Class::MOP::Instance
36       - added an is_inlinable method to allow other 
37         classes to check before they attempt to optimize.
38       - added an inline_create_instance to inline 
39         instance creation (of course) 
40         
41     ** API CHANGE **
42       - the Class::MOP::Class::*_package_variable 
43         methods are all now methods of Class::MOP::Package
44         and called *_package_symbol instead. This is 
45         because they are now more general purpose symbol 
46         table manipulation methods.        
47
48 0.29_02 Thurs. June 22, 2006
49     ++ DEVELOPER RELEASE ++
50     * Class::MOP::Class
51       - small change in &create so that it behaves 
52         properly when inherited
53       - small fix to &clone_instance
54
55 0.29_01 Fri. May 12, 2006
56     ++ DEVELOPER RELEASE ++
57       - This release works in combination with 
58         Moose 0.09_01, it is a developer release
59         because it introduces a new instance 
60         sub-protocol and has not yet been 
61         optimized.  
62
63     * Class::MOP::Class
64       - anon-classes are now properly garbage collected
65         - added tests for this 
66       - improved method modifier wrapping 
67
68     * Class::MOP::Instance
69       - added new instance protocol
70         - added tests for this
71       - changed all relevant modules and examples
72         - Class::MOP::Class
73         - Class::MOP::Attribute
74         - examples/*
75
76     * metaclass
77       - you no longer need to specify the metaclass
78         itself, if it is not there, Class::MOP::Class
79         is just assumed
80         - updated tests for this
81
82     * examples/
83       - added ArrayBasedStorage example to show 
84         instance storage using ARRAY refs instead of
85         HASH refs. 
86         - added tests for this
87       - InsideOutClass is totally revised using the 
88         new instance protocol
89         - added more tests for this
90
91 0.26 Mon. April 24, 2006
92     * Class::MOP::Class
93       - added find_attribute_by_name method
94         - added tests and docs for this
95       - some small optimizations
96
97     * Class::MOP::Attribute
98       - some small optimizations
99
100 0.25 Thurs. April 20, 2006
101     * Class::MOP::Class
102       - added create_anon_class for creating anonymous classes
103         - added tests for this
104       - added get_all_metaclasses, get_all_metaclass_names
105         and get_all_metaclass_instances method to allow
106         access to all the cached metaclass objects.
107       - attribute slot initialization is now the responsibility
108         of the attribute itself, and construct_instance now 
109         delegates appropriately
110         
111     * Class::MOP::Attribute
112       - attribute slot initialization is now the responsibility
113         of the attribute itself, so we added a method for it
114         called initialize_instance_slot
115     
116     * examples/
117       - adjusted all the examples to use the new attribute 
118         initialize_instance_slot method 
119
120 0.24 Tues. April 11, 2006
121     * Class::MOP::Class
122       - cleaned up how the before/after/around method 
123         modifiers get named with Sub::Name
124
125 0.23 Thurs. March 30, 2006
126         * Class::MOP::Class
127           - fixed the way attribute defaults are handled 
128             during instance construction (bug found by chansen)
129             
130         * Class::MOP::Attribute
131           - read-only accessors ('reader') will now die if 
132             passed more than one argument (attempting to write
133             to them basically)
134               - added tests for this
135               - adjusted all /example files to comply 
136
137 0.22 Mon. March 20, 2006
138     * Class::MOP::Class
139       - localized $@ in the *_package_variable functions
140         because otherwise, it does ugly things in Moose.
141           - added test case for this
142
143 0.21 Wed. March 15, 2006
144     * Class::MOP::Class
145       - fixed issue where metaclasses are reaped from 
146         our cache in global destruction, and so are not
147         available in DESTORY calls
148
149 0.20 Thurs. March 2, 2006
150     - removed the dependency for Clone since 
151       we no longer to deep-cloning by default.
152     
153     * Class::MOP::Method
154       - added &package_name, &name and 
155         &fully_qualified_name methods, some of 
156         which were formerly private subs in 
157         Class::MOP::Class
158       
159     * Class::MOP::Method::Wrapped
160       - allows for a method to be wrapped with 
161         before, after and around modifiers 
162           - added tests and docs for this feature
163
164     * Class::MOP::Class
165       - improved &get_package_symbol
166           - &version and &superclasses now use it
167       - methods are now blessed into Class::MOP::Method
168         whenever possible
169       - added methods to install CLOS-style method modifiers 
170          - &add_before_method_modifier
171          - &add_after_method_modifier         
172          - &add_around_method_modifier
173              - added tests and docs for these
174       - added &find_next_method_by_name which finds the 
175         equivalent of SUPER::method_name
176
177 0.12 Thurs. Feb 23, 2006
178     - reduced the dependency on B, no need to always 
179       have the latest
180
181     * examples/
182       - added docs to the C3 method dispatch order test
183       - fixed missing Algorithm::C3 dependency by making 
184         the test skip if it is not installed
185
186 0.11 Mon Feb. 20, 2006
187     * examples/
188       - added example of changing method dispatch order to C3
189       
190     * Class::MOP::Class
191       - changed how clone_instance behaves, it now only does a
192         shallow clone (see docs for more details)
193         - added docs and tests
194
195 0.10 Tues Feb. 14, 2006
196     ** This release was mostly about writing more tests and 
197        cleaning out old and dusty code, the MOP should now 
198        be considered "ready to use".
199
200     - adding more tests to get coverage up a little higher,
201       mostly testing errors and edge cases.
202       - test coverage is now at 99%
203       
204     * Class::MOP
205       - no longer optionally exports to UNIVERSAL::meta or
206         creates a custom metaclass generator, use the 
207         metaclass pragma instead.
208
209     * Class::MOP::Class  
210       - fixed a number of minor issues which came up in the 
211         error/edge-case tests
212         
213     * Class::MOP::Attribute 
214       - fixed a number of minor issues which came up in the 
215         error/edge-case tests        
216      
217     * examples/
218       - fixing the AttributesWithHistory example, it was broken.
219
220 0.06 Thurs Feb. 9, 2006
221     * metaclass
222       - adding new metaclass pragma to make setting up the 
223         metaclass a little more straightforward
224         
225     * Class::MOP
226       - clean up bootstrapping to include more complete 
227         attribute definitions for Class::MOP::Class and 
228         Class::MOP::Attribute (accessors, readers, writers, 
229         etc.) ... it is redundant, but is useful meta-info
230         to have around.
231
232     * Class::MOP::Class
233       - fixing minor meta-circularity issue with &meta, it 
234         is now more useful for subclasses
235       - added &get_attribute_map as an accessor for the 
236         hash of attribute meta objects
237       - &compute_all_applicable_attributes now just returns
238         the attribute meta-object, rather than the HASH ref
239         since all the same info can be gotten from the 
240         attribute meta-object itself
241           - updated docs & tests to reflect
242       - added &clone_instance method which does a deep clone
243         of the instance structure created by &construct_instance
244           - added docs & tests for this
245           - added Clone as a dependency
246       - added &new_object and &clone_object convience methods to
247         return blessed new or cloned instances
248           - they handle Class::MOP::Class singletons correctly too
249           - added docs & tests for this
250       - cleaned up the &constuct_class_instance so that it behaves
251         more like &construct_instance (and managed the singletons too)
252       - added the &check_metaclass_compatibility method to make sure
253         that metaclasses are upward and downward compatible.
254           - added tests and docs for this
255           
256     * examples/
257       - adjusting code to use the &Class::MOP::Class::meta
258         fix detailed above
259       - adjusting code to use the metaclass pragma
260       
261 0.05 Sat Feb. 4, 2006
262     * Class::MOP::Class
263       - added the &attribute_metaclass and &method_metaclass
264         attributes which contain a metaclass name to use for 
265         attributes/methods respectively
266     
267     * Class::MOP
268       - bootstrap additional attributes for Class::MOP::Class 
269         
270     * examples/
271       - adjusted the example code and tests to use the new
272         &attribute_metaclass feature of Class::MOP::Class
273       - added new example:
274         - LazyClass
275
276 0.04 Fri Feb. 3, 2006
277     * Class::MOP::Class
278       - some documentation suggestions from #perl6
279     
280     * Class::MOP::Attribute
281       - improved error messages    
282     
283     * examples/
284       - added new examples:
285         - AttributesWithHistory
286         - ClassEncapsultedAttributes
287
288 0.03 Fri Feb. 3, 2006
289     - converted to Module::Build instead of EU::MM
290     
291     * Class::MOP::Attribute
292       - refactored method generation code
293       - attributes are now associated with class directly
294     
295     * examples/
296       - refactored the InsideOut example to take advantage 
297         of the Class::MOP::Attribute refactoring
298       - changed example files to .pod files and hide thier
299         package names from PAUSE (I don't want to own these
300         namespaces really, they are just examples)
301
302 0.02 Thurs Feb. 2, 2006
303     - moving examples from t/lib/* to examples/*
304         - adding POD documentation to the examples
305
306 0.01 Thurs Feb. 2, 2006
307     - Initial release