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