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