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