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