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