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