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