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