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