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