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