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