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