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