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