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