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