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