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