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