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