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