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