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