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