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