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