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