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