just adjusting versions and writing changes
[gitmo/Class-MOP.git] / Changes
1 Revision history for Perl extension Class-MOP.
2
3 0.56
4     * Class::MOP
5       - we now get the &check_package_cache_flag
6         function from MRO::Compat
7       - All XS based functionality is now optional
8         and a Pure Perl version is supplied
9         - the CLASS_MOP_NO_XS environment variable
10           can now be used to force non-XS versions 
11           to always be used
12
13     * Class::MOP::Attribute
14       - add has_read_method and has_write_method
15      
16     * Class::MOP::Immutable
17       - added the ability to "wrap" methods when 
18         making the class immutable
19         
20     * Class::MOP::Class
21       - now handling the edge case of ->meta->identifier
22         dying by wrapping add_package_symbol to specifically 
23         allow for it to work.
24         - added tests for this
25         
26     * Class::MOP::Attribute    
27       Class::MOP::Class
28       Class::MOP::Immutable    
29       - any time a method meta object is constructed
30         we make sure to pass the correct package and 
31         method name information
32         
33     * Class::MOP::Method
34       Class::MOP::Method::Wrapped
35       Class::MOP::Method::Generated
36       Class::MOP::Method::Accessor
37       Class::MOP::Method::Consructor                
38       - all these classes are now bootstrapped properly
39         and now store the package_name and name attributes
40         correctly as well
41
42 0.55 Mon. April 28, 2008
43     - All classes now have proper C3 MRO support
44       - added MRO::Compat as a dependency to allow
45         for the C3 MRO support to Just Work in all
46         perl versions
47     
48     * Class::MOP::Class
49       - rebless_instance now returns the instance 
50         it has just blessed, this is mostly to 
51         facilitate chaining
52       - set the attr correctly in rebless_instance 
53         when it has no init_arg
54       - tweaked &linear_isa and &class_precedence_list
55         to support c3 classes.
56
57 0.54 Fri. March, 14, 2008
58     * Class::MOP
59       metaclass.pm
60       - making sure that load_class never gets
61         passed a value from @_ or $_ to squash 
62         Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
63
64     * Class::MOP::Class
65       - make_{immutable,mutable} now return 1
66         (cause Sartak asked)
67       - improved error handling in ->create method
68       - rebless_instance now takes extra params which 
69         will be used to populate values 
70         - added tests for this
71         
72     * Class::MOP::Object
73       - localizing the Data::Dumper configurations so 
74         that it does not pollute others (RT #33509)        
75  
76     * Class::MOP::Class
77       Class::MOP::Package
78       Class::MOP::Module
79       Class::MOP::Method
80       Class::MOP::Attribute
81       - these classes no longer define their own ->meta, 
82         but instead just inherit from Class::MOP::Object      
83       
84     * Class::MOP::Instance
85       Class::MOP::Immutable                        
86       - these classes now inherit from Class::MOP::Object
87  
88     * t/
89       - fixed the filename length on several 
90         test files so we install on VMS better
91         (RT #32295)
92       - fixed incorrect use of catdir when it 
93         should be catfile (RT #32385)
94
95 0.53 Thurs. Feb. 14, 1008
96     ~~ several doc. fixes and updates ~~
97         
98     * Class::MOP::Class
99       Class::MOP::Method::Constructor
100       Class::MOP::Attribute
101         - making init_arg accept an undefined value
102           to indicate that no constructor args can 
103           be passed (thanks to nothingmuch)
104           - added tests for this
105         - added attribute initializer attribute (rjbs)
106           
107     * Class::MOP.
108         - making this use the new init_arg => undef
109           feature instead of the silly hack from 
110           before (thanks to nothingmuch)
111
112 0.52 Tues. Jan. 22, 2008
113     * Class::MOP::Class
114       - fixed bug in rebless_instance 
115         (discovered by ash)
116
117     * Class::MOP::Method::Constructor
118       - removed assumptions about the existence of 
119         a &meta method
120
121 0.51 Mon. Jan. 14, 2008
122     ~~~ some misc. doc. fixes ~~~
123     ~~ updated copyright dates ~~
124     
125     * Class::MOP
126       - now sets the IS_RUNNING_ON_5_10 
127         constant so that we can take advantage
128         of some of the nice bits of 5.10
129     
130     * Class::MOP::Class
131       - uses the IS_RUNNING_ON_5_10 flag to 
132         optimize the &linearized_isa method 
133         and avoid the hack/check for circular
134         inheritence in &class_precedence_list 
135       - added rebless_instance method (Sartak)
136         - added tests for this
137     
138     * Class::MOP::Immutable 
139       - the immutable class now keeps track of 
140         the transformer which immutablized it
141
142     * Class::MOP::Instance
143       - added rebless_instance_structure method (Sartak)
144         - added tests for this
145
146 0.50 Fri. Dec. 21, 2007
147     * Class::MOP::Class
148       - fixed bug in immutable to make sure that 
149         transformation arguments are saved 
150         correctly (mst)
151         - added tests for this
152         
153     * Class::MOP::Immutable
154       - fixed a bug (see above)
155       
156     * Class::MOP::Attribute
157       - some doc updates
158
159 0.49 Fri. Dec. 14, 2007
160     !! Class::MOP now loads 2 x faster  !!
161     !! with XS speedups (thanks konobi) !!
162         
163     * Class::MOP
164       - removed the dependency on B
165       - added two XS functions (thanks konobi)
166         - get_code_info($code) which replaces all
167           the B fiddling we were doing with
168           faster/leaner XS level fiddling
169         - check_package_cache_flag($pkg_name) which 
170           returns the PL_sub_generation variable to 
171           be used to help manage method caching.
172           
173           NOTE: 
174           In 5.10 or greater this will actually 
175           use the mro::get_pkg_gen instead to give 
176           even more accurate caching information. 
177           blblack++ for that stuff :)
178           
179     * Class::MOP::Class
180       - added the &subclasses method (thanks rlb)
181       - added the update_package_cache_flag and 
182         reset_package_cache_flag which help keep 
183         track of when we need to re-fetch the 
184         method map. 
185       - Several small improvements to take advantage
186         of the new method map caching features
187
188 0.48 Mon. Nov. 26, 2007
189     * Class::MOP::Attribute
190       - fixed get_read/write_method to handle the 
191         HASH ref case, which makes the 
192         get_read/write_method_ref handle it too.
193         - added more tests for this
194
195 0.47 Sat. Nov. 24, 2007
196     * Class::MOP::Attribute
197       - fixed misspelling in get_write_method_ref
198         - added more tests for this
199
200 0.46 Fri. Nov. 23, 2007
201     * Class::MOP::Class
202       - added the linearized_isa method instead of constantly 
203         pruning duplicate classes (this will be even more 
204         useful in the 5.10-compat version coming soon)
205     
206     * Class::MOP::Attribute
207       - added the get_read_method_ref and get_write_method_ref
208         methods which allow you to retrieve a CODE ref which 
209         can always be used to read or write an attribute.
210
211 0.45 Thurs. Nov. 13, 2007
212     * Class::MOP::Attribute
213       - Fix error message on confess (groditi)
214
215 0.44 Thurs. Nov. 13, 2007
216     - Apparently I didn't make dist correctly (groditi)
217
218 0.43 Thurs. Nov. 13, 2007
219     * Class::MOP
220       - Add support for the 'builder' attribute (groditi)
221
222     * Class::MOP::Class
223       - optimise metaclass-already-exists check in 
224         construct_class_instance (groditi)
225       - duplicate check into initialize to save a 
226         call through (groditi)
227
228     * Class::MOP::Attribute
229       - Add support for the 'builder' attribute (groditi)
230       - Make predicates check for the existence of a value, not whether 
231         it is defined (groditi)
232
233     * Class::MOP::Instance
234       - Make predicates check for the existence of a value, not whether 
235         it is defined (groditi)
236
237     * Class::MOP::Method::Accessor 
238       - made this a subclass of Class::MOP::Method::Generated
239         - removed the relevant attributes
240
241     * Class::MOP::Method::Constructor
242       - fixed the cached values we had to be more sane
243       - made this a subclass of Class::MOP::Method::Generated
244       - fixed generated constructor so it properly handles 
245         subclasses now.
246         - added tests for this
247       - added the option to allow for both inlined and 
248         non-inlined constructors.
249       - Update inlined methods for builder and predicate changes (groditi)
250
251     * Class::MOP::Method::Generated
252       - added this class as an abstract base for the 
253         Class::MOP::Method::{Constructor,Accessor} classes
254         - added tests for this
255
256     *t/
257       - Alter tests (005, 014 020, 021) for new builder addition (groditi)
258       - Tests for new predicate behavior (and corrections to old tests) (groditi)
259
260     *examples/
261       - Update ArrayRef based class example to work with predicate changes
262
263 0.42 Mon. July 16, 2007
264     !!! Horray for mst, he fixed it !!!
265
266     * Class::MOP::Package
267       - alter symbol table handling to deal with 5.8.x and 5.9.x
268       
269     * t/
270       - Get rid of the crappy workaround from 0.40/41
271
272 0.41 Sun. July 15, 2007
273     * t/
274         Arghh!!! My TODO test didn't work, so I handle
275         it manually now so that people can use this 
276         with 5.9.5/bleadperl without issue.
277
278 0.40 Tues, July 3, 2007
279     * t/
280       ~ marked a test in 003_methods.t as TODO 
281         for perl 5.9.5 (this test is irrelvant to 
282         the module functioning on 5.9.5 for the most 
283         part anyway)
284
285 0.39 Mon. June 18, 2007
286     * Class::MOP::Immutable
287       - added make_metaclass_mutable + docs (groditi)
288       - removed unused variable
289       - added create_immutable_transformer
290         necessary for sane overloading of immutable behavior
291          - tests for this (groditi) 
292
293     * Class::MOP::Class
294       - Immutability can now be undone,
295         added make_mutable + tests + docs (groditi)
296       - Massive changes to the way Immutable is done
297         for details see comments next to make_immutable
298         This fixes a bug where custom metaclasses broke
299         when made immutable. We are now keeping one immutable 
300         metaclass instance per metaclass instead of just one 
301         to prevent isa hierarchy corruption. Memory use will go
302         up, but I suspect it will be neglible.
303          - New tests added for this behavior.  (groditi)
304
305 0.38 Thurs. May 31, 2007
306     ~~ More documentation updates ~~
307     
308     * Class::MOP::Package
309       - we now deal with stub methods properly
310         - added tests for this
311       - fixed some tests failing on 5.9.5 (thanks blblack)
312         
313     * Class::MOP::Attribute
314       - added get_read_method and get_write_method
315         thanks to groditi for this code, tests 
316         and docs.
317         - added tests and POD for this
318     
319     * Class::MOP::Class
320       - fixed RT issue #27329, clone object now 
321         handles undef values correctly.
322         - added tests for this
323       - Corrected anon-class handling so that they 
324         will not get reaped when instances still 
325         exist which need to reference them. This is 
326         the correct behavior, hopefully this is an 
327         obscure enough feature that there are not too 
328         many work arounds out in the wild.
329         - added tests for this by groditi   
330         - updated docs to explain this
331
332     * metaclass
333       - load custom metaclasses automatically (thanks groditi)
334         - added tests for this behavior
335
336 0.37 Sat. March 10, 2007
337     ~~ Many, many documentation updates ~~
338     
339     * Class::MOP
340       - added &load_class and &is_class_loaded 
341         - added tests and docs for these
342
343     * Class::MOP::Attribute
344       - default now checks the instance with defined to 
345         avoid setting off bool-overloads (found by Carl Franks)
346
347 0.37_002
348     * /t 
349       - bad name in a test, causing meaningless failuress. 
350         No other changes.
351
352 0.37_001
353     
354     ~~ GLOBAL CHANGES ~~
355     - All attribute names are now consistent and follow Perl 6 
356       style (prefixed with the sigil, and ! as the twigil for 
357       private attrs). This should not affect any code, unless 
358       you broke encapsulation, in which case, it is your problem 
359       anyway.
360       
361     !! Class::MOP::Class::Immutable has been removed
362     
363     * Class::MOP::Method::Constructor
364       - this has been moved out of Class::MOP::Class::Immutable 
365         and is a proper subclass of Class::MOP::Method now.
366         
367     * Class::MOP::Class
368       - this module now uses Class::MOP::Immutable for the 
369         immutable transformation instead of 
370         Class::MOP::Class::Immutable.
371         
372     + Class::MOP::Immutable 
373       - this module now controls the transformation from a mutable 
374         to an immutable version of the class. Docs for this will 
375         be coming eventually.
376     
377
378 0.36 Sun. Nov. 5, 2006
379     * Class::MOP::Class
380       - added a few 'no warnings' lines to keep annoying 
381         (and meaningless) warnings from chirping during 
382         global destruction.
383           
384     * Class::MOP
385       - some more bootstrapping is now done on the new 
386         classes
387     
388     * Class::MOP::Class::Immutable
389       *** API CHANGE ***    
390       - constructor generation is now handled by 
391         the Class::MOP::Method::Constructor class
392      
393     * Class::MOP::Method::Constructor
394       - created this to handle constructor generation 
395         in Class::MOP::Class::Immutable
396     
397     * Class::MOP::Attribute
398       *** API CHANGE ***    
399       - attributes now delegate to the 
400         Class::MOP::Method::Accessor to generate 
401         accessors
402     
403     * Class::MOP::Method::Accessor
404       - all accessor generation functions from 
405         Class::MOP::Attribute have been moved here
406
407 0.35 Sat. Sept. 30, 2006
408
409     * scripts/class_browser.pl
410       - initial prototype of a class browser, more 
411         on this to come. Comments and patches are 
412         very much welcome.
413
414     * Class::MOP
415       - All Class::MOP::* accessors are no longer 
416         re-generated in the bootstrap, instead 
417         they are aliased from the originals
418         - fixed tests to reflect
419       - added Class::MOP::Method (and its subclasses) 
420         to the bootstrap
421         - adjusted tests for this
422       - added the Class::MOP::Instance attributes
423         to the bootstrap
424     
425     * Class::MOP::Method
426       *** API CHANGE ***
427       - methods are no longer blessed CODE refs
428         but are actual objects which can be CODE-ified
429         - adjusted tests to compensate
430         - adjusted docs for this        
431
432     * Class::MOP::Class
433       - changed how methods are dealt with to 
434         encapsulate most of the work into the 
435         &get_method_map method
436       - made several adjustments for the change
437         in Class::MOP::Method
438       - &add_attribute now checks if you are adding 
439         a duplicate name, and properly removes the 
440         old one before installing the new one
441         - added tests for this
442         - adjusted docs for this
443     
444     * Class::MOP::Class::Immutable
445       - added caching of &get_method_map
446       - fixed issue with &get_package_symbol
447       - cleaned up the methods that die (patch by David Wheeler)
448     
449     * Class::MOP::Package
450       - added filtering capabilities to 
451         &list_all_package_symbols
452
453 0.34 Sat. Aug. 26, 2006
454     * Class::MOP::Class
455       - added the %:methods attribute, which like
456         the $:version and such just actually goes 
457         to the symbol table to get it's stuff. 
458         However, it makes the MOP more complete.
459      ** API CHANGE **
460       - The &create method now requires that all 
461         but the package name now is passed in as 
462         named parameters. See docs for more info.
463         - updated docs and tests for this
464         
465     * Class::MOP::Object
466       - added &dump method to easily Data::Dumper 
467         an object
468         
469     * Class::MOP
470       - cleaned up the initialization of attributes 
471         which do not store things in the instance 
472       - added the %:methods attribute definition to
473         the bootstrap
474         
475     ~ lots of misc. test cleanup
476
477 0.33 Sat. Aug. 19, 2006
478     * Class::MOP::Class
479       - moved the metaclass cache out of here 
480         and it is now in Class::MOP itself.
481         
482     * Class::MOP
483       - moved all the metaclass cache stuff here
484         - fixed all tests for this
485
486     * Class::MOP::Attribute
487       - reference values (other than CODE refs) 
488         are no longer allowed for defaults
489         - added tests for this
490     
491     * Class::MOP::Package
492       - fixed an issue with perl 5.8.1 and how it deals 
493         with symbol tables. The namespace hash is now 
494         always reloaded from the symbol table. 
495
496     ~ lots of misc. documentation cleanup
497
498 0.32 Sat. Aug. 12, 2006
499     + added Class::MOP::Object so that the 
500       metamodel is more complete (and closer
501       to what Perl 6 will probably be).
502
503     * Class::MOP::Package
504       - refactored entire class, this is now 
505         the primary gateway between the metaclass
506         and the Perl 5 symbol table
507         - added many tests for this
508       - this class is now a subclass of 
509         Class::MOP::Object
510         - added some tests to reflect this
511         
512     * Class::MOP::Class
513       - refactored all symbol table access to 
514         use Class::MOP::Package methods instead
515         
516     * Class::MOP::Module
517       - adding the $:version attribute in the bootstrap
518         so that Module has a version as an attribute
519         - see comment in Class::MOP for details
520       - added the $:authority attribute to this module 
521         as well as an &identifier method, to bring us 
522         ever closer to Perl 6 goodness 
523         - I have added $AUTHORITY to all the modules 
524         - added tests for this
525       
526     * Class::MOP::Instance
527       - added &deinitialize_slot for removing slots 
528         from an instance
529         - added tests for this      
530       
531     * Class::MOP::Attribute 
532       - added support for &deinitialize_slot for removing
533         slots from an instance
534         - added tests for this
535
536 0.31 Sat. July 15, 2006
537
538     * Class::MOP::Class
539       - added &find_method_by_name to locate a method
540         anywhere within the class hierarchy   
541         
542     * Class::MOP::Attribute
543       - added &set_value and &get_value for getting 
544         the value of the attribute for a particular 
545         instance.
546
547 0.30 Wed. July 5, 2006
548     ---------------------------------------
549     This is the first version of Class::MOP 
550     to introduce the immutable features which
551     will be used for optimizating the MOP. 
552     This support should still be considered
553     experimental, but moving towards stability.
554     ---------------------------------------
555     
556     * Created Class::MOP::Class::Immutable  
557     
558     * Created the Class::MOP::Package and 
559       Class::MOP::Module classes to more 
560       closely conform to Perl 6's meta-model
561
562     * Class::MOP::Class
563       - now inherits from Class::MOP::Module
564       - several methods moved to ::Module and 
565         ::Package and now inherited
566         - added tests for this
567       
568     * Class::MOP::Instance
569       - added an is_inlinable method to allow other 
570         classes to check before they attempt to optimize.
571       - added an inline_create_instance to inline 
572         instance creation (of course) 
573         
574     ** API CHANGE **
575       - the Class::MOP::Class::*_package_variable 
576         methods are all now methods of Class::MOP::Package
577         and called *_package_symbol instead. This is 
578         because they are now more general purpose symbol 
579         table manipulation methods.        
580
581 0.29_02 Thurs. June 22, 2006
582     ++ DEVELOPER RELEASE ++
583     * Class::MOP::Class
584       - small change in &create so that it behaves 
585         properly when inherited
586       - small fix to &clone_instance
587
588 0.29_01 Fri. May 12, 2006
589     ++ DEVELOPER RELEASE ++
590       - This release works in combination with 
591         Moose 0.09_01, it is a developer release
592         because it introduces a new instance 
593         sub-protocol and has not yet been 
594         optimized.  
595
596     * Class::MOP::Class
597       - anon-classes are now properly garbage collected
598         - added tests for this 
599       - improved method modifier wrapping 
600
601     * Class::MOP::Instance
602       - added new instance protocol
603         - added tests for this
604       - changed all relevant modules and examples
605         - Class::MOP::Class
606         - Class::MOP::Attribute
607         - examples/*
608
609     * metaclass
610       - you no longer need to specify the metaclass
611         itself, if it is not there, Class::MOP::Class
612         is just assumed
613         - updated tests for this
614
615     * examples/
616       - added ArrayBasedStorage example to show 
617         instance storage using ARRAY refs instead of
618         HASH refs. 
619         - added tests for this
620       - InsideOutClass is totally revised using the 
621         new instance protocol
622         - added more tests for this
623
624 0.26 Mon. April 24, 2006
625     * Class::MOP::Class
626       - added find_attribute_by_name method
627         - added tests and docs for this
628       - some small optimizations
629
630     * Class::MOP::Attribute
631       - some small optimizations
632
633 0.25 Thurs. April 20, 2006
634     * Class::MOP::Class
635       - added create_anon_class for creating anonymous classes
636         - added tests for this
637       - added get_all_metaclasses, get_all_metaclass_names
638         and get_all_metaclass_instances method to allow
639         access to all the cached metaclass objects.
640       - attribute slot initialization is now the responsibility
641         of the attribute itself, and construct_instance now 
642         delegates appropriately
643         
644     * Class::MOP::Attribute
645       - attribute slot initialization is now the responsibility
646         of the attribute itself, so we added a method for it
647         called initialize_instance_slot
648     
649     * examples/
650       - adjusted all the examples to use the new attribute 
651         initialize_instance_slot method 
652
653 0.24 Tues. April 11, 2006
654     * Class::MOP::Class
655       - cleaned up how the before/after/around method 
656         modifiers get named with Sub::Name
657
658 0.23 Thurs. March 30, 2006
659         * Class::MOP::Class
660           - fixed the way attribute defaults are handled 
661             during instance construction (bug found by chansen)
662             
663         * Class::MOP::Attribute
664           - read-only accessors ('reader') will now die if 
665             passed more than one argument (attempting to write
666             to them basically)
667               - added tests for this
668               - adjusted all /example files to comply 
669
670 0.22 Mon. March 20, 2006
671     * Class::MOP::Class
672       - localized $@ in the *_package_variable functions
673         because otherwise, it does ugly things in Moose.
674           - added test case for this
675
676 0.21 Wed. March 15, 2006
677     * Class::MOP::Class
678       - fixed issue where metaclasses are reaped from 
679         our cache in global destruction, and so are not
680         available in DESTORY calls
681
682 0.20 Thurs. March 2, 2006
683     - removed the dependency for Clone since 
684       we no longer to deep-cloning by default.
685     
686     * Class::MOP::Method
687       - added &package_name, &name and 
688         &fully_qualified_name methods, some of 
689         which were formerly private subs in 
690         Class::MOP::Class
691       
692     * Class::MOP::Method::Wrapped
693       - allows for a method to be wrapped with 
694         before, after and around modifiers 
695           - added tests and docs for this feature
696
697     * Class::MOP::Class
698       - improved &get_package_symbol
699           - &version and &superclasses now use it
700       - methods are now blessed into Class::MOP::Method
701         whenever possible
702       - added methods to install CLOS-style method modifiers 
703          - &add_before_method_modifier
704          - &add_after_method_modifier         
705          - &add_around_method_modifier
706              - added tests and docs for these
707       - added &find_next_method_by_name which finds the 
708         equivalent of SUPER::method_name
709
710 0.12 Thurs. Feb 23, 2006
711     - reduced the dependency on B, no need to always 
712       have the latest
713
714     * examples/
715       - added docs to the C3 method dispatch order test
716       - fixed missing Algorithm::C3 dependency by making 
717         the test skip if it is not installed
718
719 0.11 Mon Feb. 20, 2006
720     * examples/
721       - added example of changing method dispatch order to C3
722       
723     * Class::MOP::Class
724       - changed how clone_instance behaves, it now only does a
725         shallow clone (see docs for more details)
726         - added docs and tests
727
728 0.10 Tues Feb. 14, 2006
729     ** This release was mostly about writing more tests and 
730        cleaning out old and dusty code, the MOP should now 
731        be considered "ready to use".
732
733     - adding more tests to get coverage up a little higher,
734       mostly testing errors and edge cases.
735       - test coverage is now at 99%
736       
737     * Class::MOP
738       - no longer optionally exports to UNIVERSAL::meta or
739         creates a custom metaclass generator, use the 
740         metaclass pragma instead.
741
742     * Class::MOP::Class  
743       - fixed a number of minor issues which came up in the 
744         error/edge-case tests
745         
746     * Class::MOP::Attribute 
747       - fixed a number of minor issues which came up in the 
748         error/edge-case tests        
749      
750     * examples/
751       - fixing the AttributesWithHistory example, it was broken.
752
753 0.06 Thurs Feb. 9, 2006
754     * metaclass
755       - adding new metaclass pragma to make setting up the 
756         metaclass a little more straightforward
757         
758     * Class::MOP
759       - clean up bootstrapping to include more complete 
760         attribute definitions for Class::MOP::Class and 
761         Class::MOP::Attribute (accessors, readers, writers, 
762         etc.) ... it is redundant, but is useful meta-info
763         to have around.
764
765     * Class::MOP::Class
766       - fixing minor meta-circularity issue with &meta, it 
767         is now more useful for subclasses
768       - added &get_attribute_map as an accessor for the 
769         hash of attribute meta objects
770       - &compute_all_applicable_attributes now just returns
771         the attribute meta-object, rather than the HASH ref
772         since all the same info can be gotten from the 
773         attribute meta-object itself
774           - updated docs & tests to reflect
775       - added &clone_instance method which does a deep clone
776         of the instance structure created by &construct_instance
777           - added docs & tests for this
778           - added Clone as a dependency
779       - added &new_object and &clone_object convience methods to
780         return blessed new or cloned instances
781           - they handle Class::MOP::Class singletons correctly too
782           - added docs & tests for this
783       - cleaned up the &constuct_class_instance so that it behaves
784         more like &construct_instance (and managed the singletons too)
785       - added the &check_metaclass_compatibility method to make sure
786         that metaclasses are upward and downward compatible.
787           - added tests and docs for this
788           
789     * examples/
790       - adjusting code to use the &Class::MOP::Class::meta
791         fix detailed above
792       - adjusting code to use the metaclass pragma
793       
794 0.05 Sat Feb. 4, 2006
795     * Class::MOP::Class
796       - added the &attribute_metaclass and &method_metaclass
797         attributes which contain a metaclass name to use for 
798         attributes/methods respectively
799     
800     * Class::MOP
801       - bootstrap additional attributes for Class::MOP::Class 
802         
803     * examples/
804       - adjusted the example code and tests to use the new
805         &attribute_metaclass feature of Class::MOP::Class
806       - added new example:
807         - LazyClass
808
809 0.04 Fri Feb. 3, 2006
810     * Class::MOP::Class
811       - some documentation suggestions from #perl6
812     
813     * Class::MOP::Attribute
814       - improved error messages    
815     
816     * examples/
817       - added new examples:
818         - AttributesWithHistory
819         - ClassEncapsultedAttributes
820
821 0.03 Fri Feb. 3, 2006
822     - converted to Module::Build instead of EU::MM
823     
824     * Class::MOP::Attribute
825       - refactored method generation code
826       - attributes are now associated with class directly
827     
828     * examples/
829       - refactored the InsideOut example to take advantage 
830         of the Class::MOP::Attribute refactoring
831       - changed example files to .pod files and hide thier
832         package names from PAUSE (I don't want to own these
833         namespaces really, they are just examples)
834
835 0.02 Thurs Feb. 2, 2006
836     - moving examples from t/lib/* to examples/*
837         - adding POD documentation to the examples
838
839 0.01 Thurs Feb. 2, 2006
840     - Initial release