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