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