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