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