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