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