dist
[gitmo/Class-MOP.git] / Changes
1 Revision history for Perl extension Class-MOP.
2
3 0.29_03 Wed. July 5, 2006
4     ++ DEVELOPER RELEASE ++
5     
6     created the Class::MOP::Package and 
7     Class::MOP::Module classes to more 
8     closely conform to Perl 6's meta model
9     
10     created Class::MOP::Class::Immutable 
11     which can be used to "close" a class 
12     and then apply some optimizations
13
14     * Class::MOP::Class
15       - now inherits from Class::MOP::Module
16       - several methods moved to ::Module and 
17         ::Package and now inherited
18         - added tests for this
19       
20     * Class::MOP::Instance
21       - added an is_inlinable method to allow other 
22         classes to check before they attempt to optimize.
23       - added an inline_create_instance to inline 
24         instance creation (of course) 
25         
26     ** API CHANGE **
27       - the Class::MOP::Class::*_package_variable 
28         methods are all now methods of Class::MOP::Package
29         and called *_package_symbol instead. This is 
30         because they are now more general purpose symbol 
31         table manipulation methods.        
32
33 0.29_02 Thurs. June 22, 2006
34     ++ DEVELOPER RELEASE ++
35     * Class::MOP::Class
36       - small change in &create so that it behaves 
37         properly when inherited
38       - small fix to &clone_instance
39
40 0.29_01 Fri. May 12, 2006
41     ++ DEVELOPER RELEASE ++
42       - This release works in combination with 
43         Moose 0.09_01, it is a developer release
44         because it introduces a new instance 
45         sub-protocol and has not yet been 
46         optimized.  
47
48     * Class::MOP::Class
49       - anon-classes are now properly garbage collected
50         - added tests for this 
51       - improved method modifier wrapping 
52
53     * Class::MOP::Instance
54       - added new instance protocol
55         - added tests for this
56       - changed all relevant modules and examples
57         - Class::MOP::Class
58         - Class::MOP::Attribute
59         - examples/*
60
61     * metaclass
62       - you no longer need to specify the metaclass
63         itself, if it is not there, Class::MOP::Class
64         is just assumed
65         - updated tests for this
66
67     * examples/
68       - added ArrayBasedStorage example to show 
69         instance storage using ARRAY refs instead of
70         HASH refs. 
71         - added tests for this
72       - InsideOutClass is totally revised using the 
73         new instance protocol
74         - added more tests for this
75
76 0.26 Mon. April 24, 2006
77     * Class::MOP::Class
78       - added find_attribute_by_name method
79         - added tests and docs for this
80       - some small optimizations
81
82     * Class::MOP::Attribute
83       - some small optimizations
84
85 0.25 Thurs. April 20, 2006
86     * Class::MOP::Class
87       - added create_anon_class for creating anonymous classes
88         - added tests for this
89       - added get_all_metaclasses, get_all_metaclass_names
90         and get_all_metaclass_instances method to allow
91         access to all the cached metaclass objects.
92       - attribute slot initialization is now the responsibility
93         of the attribute itself, and construct_instance now 
94         delegates appropriately
95         
96     * Class::MOP::Attribute
97       - attribute slot initialization is now the responsibility
98         of the attribute itself, so we added a method for it
99         called initialize_instance_slot
100     
101     * examples/
102       - adjusted all the examples to use the new attribute 
103         initialize_instance_slot method 
104
105 0.24 Tues. April 11, 2006
106     * Class::MOP::Class
107       - cleaned up how the before/after/around method 
108         modifiers get named with Sub::Name
109
110 0.23 Thurs. March 30, 2006
111         * Class::MOP::Class
112           - fixed the way attribute defaults are handled 
113             during instance construction (bug found by chansen)
114             
115         * Class::MOP::Attribute
116           - read-only accessors ('reader') will now die if 
117             passed more than one argument (attempting to write
118             to them basically)
119               - added tests for this
120               - adjusted all /example files to comply 
121
122 0.22 Mon. March 20, 2006
123     * Class::MOP::Class
124       - localized $@ in the *_package_variable functions
125         because otherwise, it does ugly things in Moose.
126           - added test case for this
127
128 0.21 Wed. March 15, 2006
129     * Class::MOP::Class
130       - fixed issue where metaclasses are reaped from 
131         our cache in global destruction, and so are not
132         available in DESTORY calls
133
134 0.20 Thurs. March 2, 2006
135     - removed the dependency for Clone since 
136       we no longer to deep-cloning by default.
137     
138     * Class::MOP::Method
139       - added &package_name, &name and 
140         &fully_qualified_name methods, some of 
141         which were formerly private subs in 
142         Class::MOP::Class
143       
144     * Class::MOP::Method::Wrapped
145       - allows for a method to be wrapped with 
146         before, after and around modifiers 
147           - added tests and docs for this feature
148
149     * Class::MOP::Class
150       - improved &get_package_symbol
151           - &version and &superclasses now use it
152       - methods are now blessed into Class::MOP::Method
153         whenever possible
154       - added methods to install CLOS-style method modifiers 
155          - &add_before_method_modifier
156          - &add_after_method_modifier         
157          - &add_around_method_modifier
158              - added tests and docs for these
159       - added &find_next_method_by_name which finds the 
160         equivalent of SUPER::method_name
161
162 0.12 Thurs. Feb 23, 2006
163     - reduced the dependency on B, no need to always 
164       have the latest
165
166     * examples/
167       - added docs to the C3 method dispatch order test
168       - fixed missing Algorithm::C3 dependency by making 
169         the test skip if it is not installed
170
171 0.11 Mon Feb. 20, 2006
172     * examples/
173       - added example of changing method dispatch order to C3
174       
175     * Class::MOP::Class
176       - changed how clone_instance behaves, it now only does a
177         shallow clone (see docs for more details)
178         - added docs and tests
179
180 0.10 Tues Feb. 14, 2006
181     ** This release was mostly about writing more tests and 
182        cleaning out old and dusty code, the MOP should now 
183        be considered "ready to use".
184
185     - adding more tests to get coverage up a little higher,
186       mostly testing errors and edge cases.
187       - test coverage is now at 99%
188       
189     * Class::MOP
190       - no longer optionally exports to UNIVERSAL::meta or
191         creates a custom metaclass generator, use the 
192         metaclass pragma instead.
193
194     * Class::MOP::Class  
195       - fixed a number of minor issues which came up in the 
196         error/edge-case tests
197         
198     * Class::MOP::Attribute 
199       - fixed a number of minor issues which came up in the 
200         error/edge-case tests        
201      
202     * examples/
203       - fixing the AttributesWithHistory example, it was broken.
204
205 0.06 Thurs Feb. 9, 2006
206     * metaclass
207       - adding new metaclass pragma to make setting up the 
208         metaclass a little more straightforward
209         
210     * Class::MOP
211       - clean up bootstrapping to include more complete 
212         attribute definitions for Class::MOP::Class and 
213         Class::MOP::Attribute (accessors, readers, writers, 
214         etc.) ... it is redundant, but is useful meta-info
215         to have around.
216
217     * Class::MOP::Class
218       - fixing minor meta-circularity issue with &meta, it 
219         is now more useful for subclasses
220       - added &get_attribute_map as an accessor for the 
221         hash of attribute meta objects
222       - &compute_all_applicable_attributes now just returns
223         the attribute meta-object, rather than the HASH ref
224         since all the same info can be gotten from the 
225         attribute meta-object itself
226           - updated docs & tests to reflect
227       - added &clone_instance method which does a deep clone
228         of the instance structure created by &construct_instance
229           - added docs & tests for this
230           - added Clone as a dependency
231       - added &new_object and &clone_object convience methods to
232         return blessed new or cloned instances
233           - they handle Class::MOP::Class singletons correctly too
234           - added docs & tests for this
235       - cleaned up the &constuct_class_instance so that it behaves
236         more like &construct_instance (and managed the singletons too)
237       - added the &check_metaclass_compatibility method to make sure
238         that metaclasses are upward and downward compatible.
239           - added tests and docs for this
240           
241     * examples/
242       - adjusting code to use the &Class::MOP::Class::meta
243         fix detailed above
244       - adjusting code to use the metaclass pragma
245       
246 0.05 Sat Feb. 4, 2006
247     * Class::MOP::Class
248       - added the &attribute_metaclass and &method_metaclass
249         attributes which contain a metaclass name to use for 
250         attributes/methods respectively
251     
252     * Class::MOP
253       - bootstrap additional attributes for Class::MOP::Class 
254         
255     * examples/
256       - adjusted the example code and tests to use the new
257         &attribute_metaclass feature of Class::MOP::Class
258       - added new example:
259         - LazyClass
260
261 0.04 Fri Feb. 3, 2006
262     * Class::MOP::Class
263       - some documentation suggestions from #perl6
264     
265     * Class::MOP::Attribute
266       - improved error messages    
267     
268     * examples/
269       - added new examples:
270         - AttributesWithHistory
271         - ClassEncapsultedAttributes
272
273 0.03 Fri Feb. 3, 2006
274     - converted to Module::Build instead of EU::MM
275     
276     * Class::MOP::Attribute
277       - refactored method generation code
278       - attributes are now associated with class directly
279     
280     * examples/
281       - refactored the InsideOut example to take advantage 
282         of the Class::MOP::Attribute refactoring
283       - changed example files to .pod files and hide thier
284         package names from PAUSE (I don't want to own these
285         namespaces really, they are just examples)
286
287 0.02 Thurs Feb. 2, 2006
288     - moving examples from t/lib/* to examples/*
289         - adding POD documentation to the examples
290
291 0.01 Thurs Feb. 2, 2006
292     - Initial release