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