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