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