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