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