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