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