update Changes
[gitmo/Class-MOP.git] / Changes
1 Revision history for Perl extension Class-MOP.
2
3 0.87
4     * Class::MOP::Class
5       - Synced docs about immutability with the current reality (which
6         changed back in 0.82_01)
7       - Removed the immutable_transformer method, which had been
8         returning undef since 0.82_01 anyway.
9
10     * Tests
11       - Got rid of tests which needed Moose and improved testing of
12         constructor/destructor inlining warnings.
13
14 0.86 Tue, Jun 16, 2009
15     * Class::MOP::Class
16       - If you redefined a subroutine at runtime and then wrapped it
17         with a method modifier, the modifier could in some cases wrap
18         the original version of the subroutine
19
20     * Class::MOP::Class
21       - make_immutable issues a warning instead of overriding an
22         existing DESTROY method (Dylan William Hardison)
23
24 0.85 Sat, Jun 6, 2009
25     * Class::MOP::Attribute
26       - Allow default values to be Class::MOP::Methods.  (Florian
27         Ragwitz)
28       - Test the above. (Rhesa Rozendaal)
29       - Tweak original commit so the intent matches the accepted
30         behavior (Nicholas Perez)
31
32     * Class::MOP
33       - Localize $SIG{__DIE__} inside _try_load_one_class (Sartak)
34
35     * Class::MOP::Class
36       - Add direct_subclasses method (Sartak)
37         - Tests for subclasses and direct_subclasses (Sartak)
38       - subname is no longer used unconditionally in add_method, but
39         only if the code reference's name is '__ANON__' (nothingmuch)
40       - Add a hook for _superclasses_updated (Sartak)
41
42     * Class::MOP::Method
43       - Remove long, old warning about possibly outdated modules
44         (Sartak)
45
46 0.84 Tue, May 12, 2009
47     * Makefile.PL
48       - Depend on Text::Exception 0.27 to avoid failing tests ond old
49         versions (rafl)
50
51     * Class::MOP
52       - Made is_class_loaded a little stricter. It was reporting that
53         a class was loaded if it merely had an @ISA variable in its
54         stash. Now it checks that the @ISA var has elements in it.
55       - Deprecate in_global_destruction and subname re-exporting
56         (perigrin & Sartak)
57
58     * Class::MOP::Class
59       - Explicitly use Devel::GlobalDestruction and Sub::Name
60         (perigrin)
61
62     * Class::MOP::Package
63       - Disable prototype mismatch warnings for add_package_symbol.
64         (Florian Ragwitz)
65
66 0.83 Mon, April 27, 2009
67     * Class::MOP::Class
68       - Fix segfault when calling get_method_map on a metaclass for an empty
69         package (doy)
70
71 0.82_02 Fri, April 24, 2009
72     * Class::MOP::Method::Inlined
73       - Don't inline if the expected method is not defined at all (happens with
74         e.g. Moose::Object::_new is the expected method due to an overridden
75         name)
76     * Tests
77       - Some tests were trying to load Class::MOP::Immutable, which
78         was removed in 0.82_01.
79
80 0.82_01 Thu, April 23, 2009
81     * Class::MOP::Immutable (and others)
82       - Refactor the immutability system to use a pre-defined class
83         for the immutable metaclass of Class::MOP::Class::Immutable::$class
84       - Rather than generating methods into this class every time, use
85         a Trait (basic mixin) to supply the cached methods
86       - Remove the hack that returns the mutable metaclass for
87         metacircularity in order to provide consistent meta-metaclasses
88         for the Moose compatibility handling code
89         (mst broke it, nothingmuch fixed it)
90
91 0.82 Mon, April 20, 2009
92     * Various
93       - The deprecation wrappers for some renamed methods were not
94         passing arguments to the new method. (nothingmuch)
95
96     * Class::MOP::Immutable
97       - Warn during immutablization if the local class provides its own
98         constructor, to parallel the warning in Moose when a superclass
99         provides its own constructor (doy)
100
101 0.81 Tue, April 7, 2009
102     * Class::MOP
103     * Class::MOP::Class
104     * Class::MOP::Instance
105     * Class::MOP::Attribute
106     * Class::MOP::Method::Accessor
107     * Class::MOP::Method::Constructor
108       - Include stack traces in the deprecation warnings introduced in
109         0.80_01. (Florian Ragwitz)
110
111     * MOP.xs
112       - Avoid c compiler warnings by declaring some unused function
113         arguments. (Florian Ragwitz)
114
115 0.80_01 Sun, April 5, 2009
116     * Makefile.PL
117       - Make sure to preserve any compiler flags already defined in
118         Config.pm. Patch by Vincent Pit. RT #44739.
119
120     * Many methods have been renamed with a leading underscore, and a
121       few have been deprecated entirely. The methods with a leading
122       underscore are consider "internals only". People writing
123       subclasses or extensions to Class::MOP should feel free to
124       override them, but they are not for "public" use.
125
126       - Class::MOP::Class
127         - construct_class_instance => _construct_class_instance (use new_object)
128         - construct_instance => _construct_instance (use new_object)
129         - check_metaclass_compatibility => _check_metaclass_compatibility
130         - create_meta_instance => _create_meta_instance (use get_meta_instance)
131         - clone_instance => _clone_instance (use clone_object)
132         - compute_all_applicable_methods is deprecated, use get_all_methods
133         - compute_all_applicable_attributes is deprecated, use get_all_attributes
134
135       - Class::MOP::Instance
136         - bless_instance_structure is deprecated and will be removed
137           in a future release
138
139       - Class::MOP::Module
140         - create has been renamed to _instantiate_module. This method
141           does not construct an object, it evals some code that
142           creates the relevant package in Perl's symbol table.
143
144       - Class::MOP::Method::Accessor
145         - initialize_body => _initialize_body (this is always called
146           when an object is constructed)
147         - /(generate_.*_method(?:_inline)?)/ => '_' . $1
148
149       - Class::MOP::Method::Constructor
150         - initialize_body => _initialize_body (this is always called
151           when an object is constructed)
152         - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
153         - attributes => _attributes
154         - meta_instance => _meta_instance
155
156 0.80 Wed, April 1, 2009
157     * Class::MOP::*
158       - Call user_class->meta in fewer places, with the eventual goal
159         of allowing the user to rename or exclude ->meta
160         altogether. Instead uses Class::MOP::class_of. (Sartak)
161
162     * Class::MOP
163       - New class_of function that should be used to retrieve a
164         metaclass. This is unlike get_metaclass_by_name in that it
165         accepts instances, not just class names. (Sartak)
166
167     * Class::MOP
168       - load_first_existing_class didn't actually load the first
169         existing class; instead, it loaded the first existing and
170         compiling class.  It now throws an error if a class exists (in
171         @INC) but fails to compile.  (hdp)
172
173     * Class::MOP
174     * Class::MOP::Class
175       - we had some semi-buggy code that purported to provide a
176         HAS_ISAREV based on whether mro had get_isarev (due to an
177         oversight, it always returned 1). Since mro and MRO::Compat
178         have always had get_isarev, HAS_ISAREV was pointless. This
179         insight simplified the subclasses method by deleting the
180         pure-perl fallback. HAS_ISAREV is now deprecated. (Sartak)
181
182 0.79 Fri, March 29, 2009
183     * No changes from 0.78_02.
184
185 0.78_02 Thu, March 26, 2009
186     * Class::MOP::Class
187     * Class::MOP::Immutable
188       - A big backwards-incompatible refactoring of the Immutable API,
189         and the make_immutable/make_mutable pieces of the Class
190         API. The core __PACKAGE__->meta->make_immutable API remains
191         the same, however, so this should only affect the most
192         guts-digging code.
193
194     * XS code
195       - The XS code used a macro, XSPROTO, that's only in 5.10.x. This
196         has been fixed to be backwards compatible with 5.8.x.
197
198     * Class::MOP::Class
199       - Add a hook for rebless_instance_away (Sartak)
200       - Use blessed instead of ref to get an instance's class name
201         in rebless_instance. (Sartak)
202
203 0.78_01 Wed, March 18, 2009
204     * Class::MOP::*
205       - Revised and reorganized all of the API documentation. All
206         classes now have (more or less) complete API documentation.
207
208     * Class::MOP::Class
209     * Class::MOP::Instance
210       - Reblessing into a package that supports overloading wasn't
211         properly adding overload magic to the object due to a bug
212         in (at least) 5.8.8. We now use $_[1] directly which seems
213         to set the magic properly. (Sartak)
214
215     * Class::MOP::Attribute
216       - The process_accessors method is now private. A public alias
217         exists (and will stick around for a few releases), but it
218         warns that calling the public method is deprecated.
219
220     * Class::MOP::Method::Generated
221       - Removed the new and _new methods, since this is an abstract
222         base class, and all existing subclasses implement their own
223         constructors.
224
225     * MOP.xs
226       - Stop is_class_loaded from thinking a class is loaded if it
227         only has an empty GV (Florian Ragwitz).
228         - Add a test for this (Yappo).
229       - Refactor get_all_package_symbols to allow short-circuiting
230         (Florian Ragwitz).
231         - Use this in is_class_loaded (Florian Ragwitz).
232       - Stop segfaulting when trying to get the name from a sub that's
233         still being compiled (Florian Ragwitz).
234         - Add tests for this (Florian Ragwitz).
235       - Prefix all public symbols with "mop_" (Florian Ragwitz).
236       - Clean up and simplify prehashing of hash keys (Florian Ragwitz).
237       - Simplify creating simple xs reader methods (Florian Ragwitz).
238       - Make everything compile with c++ compilers (Florian Ragwitz).
239       - Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
240
241     * Tests
242       - Remove optional test plans for tests depending on Sub::Name as
243         we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
244
245     * Makefile.PL
246       - Rebuild all c code if mop.h has changed (Florian Ragwitz)
247
248 0.78 Mon, February 23, 2009
249     * No changes from 0.77_01
250
251 0.77_01 Sun, February 22, 2009
252     * Everything
253       - This package now requires its XS components. Not using
254         Sub::Name lead to different behavior and bugginess in the pure
255         Perl version of the code. A Moose test would fail when run
256         against the pure Perl version of this code.
257
258     * Class::MOP::Instance
259       - The inline_* methods now quote attribute names themselves, and
260         don't expect to receive a quoted value.
261
262
263 0.77 Sat, February 14, 2009
264     * MOP.xs
265       - Avoid assertion errors on debugging perls in is_class_loaded
266         (Florian Ragwitz)
267
268     * Class::MOP
269       - Fixed various corner cases where is_class_loaded incorrectly
270         returned true for a class that wasn't really loaded. (Dave
271         Rolsky)
272
273     * Class::MOP::Class
274       - Add get_all_method_names (Sartak)
275       - Add a wrapped_method_metaclass attribute (Florian Ragwitz)
276
277     * Class::MOP::Package
278       - Disable deprecated get_all_package_symbols in list
279         context. (Florian Ragwitz)
280
281     * Makefile.PL
282       - Make sure we generate a BSD-compatible Makefile (Florian
283         Ragwitz)
284
285     * Class::MOP::Class
286       - The misspelled "check_metaclass_compatability" method we've
287         kept around for backwards compat_i_bility will be removed in a
288         near future release. You've been warned.
289
290 0.76 Thu, January 22, 2009
291     * Class::MOP::Method::Generated
292       - Added new private methods to support code generation, which
293         are being used by Moose and can be used by MooseX
294         authors. (mst)
295       - Generated methods are now generated with a #line directive
296         reflecting the source of the generated method. (nothingmuch)
297
298     * Class::MOP::Class
299       - Clarified documentation of methods that return
300         Class::MOP::Method objects. (doy)
301
302     * Class::MOP
303       - Clarified documentation of the metaclass cache methods. (Sartak)
304
305     * Tests
306       - Add test showing how the xs Class::MOP::is_class_loaded can
307         be made to operate differently to the pure perl version (t0m)
308
309 0.75 Wed, December 31, 2008
310     * Class::MOP::Class
311       - A class that was made immutable and then mutable could end up
312         sharing an immutable transformer object
313         (Class::MOP::Immutable) with other classes, leading to all
314         sorts of odd bugs. Reported by t0m. (Dave Rolsky)
315
316 0.74 Tue, December 25, 2008
317     * MOP.xs
318       - Add an xs implementation of Class::MOP::is_class_loaded (closes
319         RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
320       - Changed internals to make prehashing of hash keys easier and less
321         error-prone. (Florian Ragwitz)
322     * Class::MOP::Class
323       - Fix documentation to show that around modifiers happen on both
324         sides of the modified method. (Dave Rolsky)
325
326 0.73 Tue, December 16, 2008
327     * MOP.xs
328       - Don't use Perl_mro_meta_init. It's not part of the public perl
329         api. Fixes failures to build on Win32 (RT #41750).  (Florian
330         Ragwitz)
331     * t/082_get_code_info.t
332       - Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
333         munger anonymous subs when under -d and so making the tests
334         succeed in that case.
335
336 0.72 Mon, December 8, 2008
337     * Class::MOP::Package
338       - Pass options to _new, so subclass' attributes can be
339         initialized (Sartak)
340     * Class::MOP::Method
341       - In the docs, indicate that package_name and name are required
342         when calling ->wrap (Stefan O'Rear)
343
344 0.71_02 Fri, December 5, 2008
345     * Class::MOP::Immutable
346       - Added a new attribute, inlined_constructor, which is true if
347         the constructor was inlined.
348     * Class::MOP::Package
349       - Make get_all_package_symbols return a hash ref in scalar
350         context and deprecate calling it in list context with a
351         warning. (Florian Ragwitz)
352     * MOP.xs
353       - Various improvements and refactoring, making things more robust and
354         easier to maintain. (Florian Ragwitz)
355
356 0.71_01 Wed, December 3, 2008
357     * Class::MOP::Method
358       - Add an "execute" method to invoke the body so
359         we can avoid using the coderef overload (Sartak)
360     * Class::MOP::Immutable
361       - When we memoize methods, get their results lazily
362         to remove some compile-time cost (Sartak)
363       - Small speedup from eliminating several method
364         calls (Sartak)
365     * Class::MOP::Class
366       - Some small internal tweaks to try to reduce the number of
367         times we call get_method_map when bootstrapping the MOP. This
368         might make loading Class::MOP (and Moose) a little
369         faster. (Dave Rolsky)
370       - Implemented an optional XS version of get_method_map. Mostly
371         taken from a patch by Goro Fuji (rt.cpan.org #41080), with
372         help form Florian Ragwitz. (Dave Rolsky)
373       - Make the behaviour of of get_all_package_symbols (and
374         therefore get_method_map) consistent for stub methods. Report
375         and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
376
377 0.71 Wed November 26, 2008
378     * Class::MOP::Class
379     * Class::MOP::Module
380       - Actual package creation has moved upward from
381         Class to Module so that Moose roles can share
382         the code (Sartak)
383
384 0.70_01 Mon, November 19, 2008
385     * Class::MOP
386       - Fixes for failures with blead (Florian Ragwitz)
387       - Silenced compiler warnings (Florian Ragwitz)
388
389 0.70 Fri, November 14, 2008
390     * Class::MOP
391       - Fixed an odd corner case where the XS version of
392         get_all_package_symbols could cause a segfault. This only
393         happened with inlined constants in Perl 5.10.0 (Florian
394         Ragwitz)
395
396 0.69 Fri, November 7, 2008
397     * Class::MOP::Method::Wrapped
398       - Added introspection methods for method modifiers (Dave Rolsky)
399
400
401 0.68 Fri October 24, 2008
402     * Class::MOP
403       - Make load_class require by file name instead of module name.
404         This stops confusing error messages when loading '__PACKAGE__'.
405         (Florian Ragwitz)
406       - Add load_one_class_of function to enable you to load one of a
407         list of classes, rather than having to call load_class multiple
408         times in an eval. (t0m)
409
410 0.67 Tue October 14, 2008
411     * Class::MOP::Class
412       - Call a method on the class after setting the superclass list
413         so that we can get Perl to detect cycles before MRO::Compat
414         spirals into an infinite loop (sartak)
415         - Reported by Schwern, [rt.cpan.org #39001]
416       - In create(), pass unused options on to initialize()
417         - added test for this
418
419 0.66 Sat September 20, 2008
420     !! This release has an incompatible change regarding !!
421        introspection of a class's method with Class::MOP::Class !!
422
423     * Tests and XS
424       - We (us maintainers) now run all tests with XS and then without
425         XS, which should help us catch skew between the XS/pure Perl
426         code. (Dave Rolsky)
427
428     * Class::MOP::Class
429       ! The alias_method method has been deprecated. It now simply
430         calls add_method instead. There is no distinction between
431         aliased methods and "real" methods.
432
433         This means that methods added via alias_method now show up as
434         part of the class's method list/map. This is a backwards
435         incompatible change, but seems unlikely to break any
436         code. Famous last words. (Dave Rolsky)
437
438     * Class::MOP::Class
439       - Fixed the spelling of "compatibility", but we still have a
440         "check_metaclass_compatability" method for backwards
441         compatibility.
442
443 0.65 Mon September 1, 2008
444     For those not following the series of dev releases, the changes
445     from 0.64 from 0.65 can mostly be summed up as a lot performance
446     improvements by nothingmuch, including new optional XS versions of
447     some methods. Also, Class::MOP now works _without_ any XS modules,
448     for sad systems without a compiler.
449
450     * Class::MOP::Method
451       - Added name and package_name XS accessors, and make sure all
452         the XS and Perl versions work the same way. (Dave Rolsky)
453
454     * MOP.xs
455       - The XS versions of various methods just returned undef when
456         called class methods, rather than dying like the pure Perl
457         versions. (Dave Rolsky)
458
459 0.64_07 Fri August 29, 2008
460     * Class::MOP
461       - Silenced warnings that managed to break Moose tests when XS
462         was loaded. (Dave Rolsky)
463       - Some XS versions of methods were ignored because of typos in
464         MOP.xs. (Dave Rolsky)
465
466 0.64_06 Mon August 25, 2008
467     * Class::MOP (MOP.xs)
468       - Another MS VC++ fix, cannot declare a variable in the middle
469         of a scope (Taro Nishino).
470
471 0.64_05 Sun August 24, 2008
472     * Class::MOP
473       - None of the dev releases actually loaded the XS properly, but
474         we silently fell back to the pure Perl version of the
475         code. (Dave Rolsky)
476
477     * Class::MOP (MOP.xs)
478       - Replaced some code that used functions not available on Visual
479         C++ with some Perl XS API bits (Dave Rolsky).
480
481 0.64_04 Sat August 23, 2008
482     * Class::MOP::Class
483       - Workaround a bug in 5.8.1's goto sub (nothingmuch)
484
485     * pod.t and pod_coveraget.t
486       - These are no longer shipped with the tarball because of bogus
487         failures from CPAN testers. (Dave Rolsky)
488
489 0.64_03 Thu August 21, 2008
490     * Class::MOP::Package
491       - Some (legit) code was misparsed by earlier 5.8.x
492         releases. (nothingmuch)
493
494     * Class::MOP
495       - Fix a constant in void context warning (nothingmuch)
496
497 0.64_02 Thu August 21, 2008
498     * Makefile.PL and Class::MOP
499       - Explicitly require Perl 5.8.0+ (Dave Rolsky)
500
501     * Makefile.PL
502       - Add missing prereqs that got lost in the switch away from
503         Module::Install.
504
505     * Class::MOP::Instance
506       - New method - get_all_attributes (nothingmuch)
507
508 0.64_01 Wed August 20, 2008
509     * Makefile.PL
510       - We now check to see if you have a compiler. If you don't, the
511         module installs without some XS bits, but will work the same
512         as with XS. This should make it easier to install on platforms
513         without a compiler (like Windows). (Dave Rolsky)
514
515     * many modules
516       - Perl 6 style attribute naming replaced with sane style ('methods', not
517         '%!methods'). These changes should not impact any existing API uses.
518         (nothingmuch).
519
520     * many modules
521       - Quite a number of optimizations based on profiling, including
522         allowing constructors to take hash references instead of
523         hashes, duplicating some frequently used code in XS, and
524         making constructors immutable. These changes should not impact
525         any existing API uses. (nothingmuch)
526
527     * Many modules
528       - Constructors now respect the meta attributes of their subclasses,
529         facilitating MOP extensibility. More related changes will happen in the
530         next several releases. (nothingmuch)
531
532     * Class::MOP::Class
533       - New method - get_all_methods, replaces the deprecated
534         compute_all_applicable_methods. get_all_attributes provided for
535         consistency (nothingmuch)
536       - New method - wrap_method was refactored out of get_method_map
537         (nothingmuch)
538       - New API for meta instance invalidation - invalidate_meta_instance,
539         invalidate_meta_instances, add_dependent_meta_instance,
540         remove_dependent_meta_instance, called automatically when attribute
541         definitions change and allows notification of dependent subclasses.
542         (nothingmuch)
543
544 0.64 Sun August 3, 2008
545     * Class::MOP::Immutable
546       - fixing subtle edge case in immutable when you
547         call ->meta (stevan)
548       - clean up option processing (nothingmuch)
549
550     * Class::MOP::Instance
551       - inlined initialize slot didn't match
552         non-inlined (nothingmuch)
553
554 0.63 Mon July 7, 2008
555     * Class::MOP
556       - load_class will initialize a metaclass even if
557         the class is already loaded (sartak)
558       - load_class now returns the metaclass instance
559         instead of just 1 (sartak)
560
561     * elsewhere
562       - better error messages (sartak and Dave Rolsky)
563
564 0.62 Wed June 18, 2008
565     - in is_class_loaded, recognize scalar references (as opposed to globs) in
566       the symbol table as methods (these are optimized constant subs)
567
568 0.61 Fri. June 13, 2008
569     - Okay, lets give this another try and see if PAUSE 
570       recognizes it correct this time.
571
572 0.60 Thurs. Jun 12, 2008
573     - Fixed a version number issue by bumping all modules
574       to 0.60.
575
576 0.59 Thurs. Jun 12, 2008
577     !! Several fixes resulting in yet another 25-30% speedup !!
578
579     * Class::MOP::Class
580       - now stores the instance of the instance 
581         metaclass to avoid needless recomputation
582         and deletes it when the cache is blown
583       - introduce methods to query Class::MOP::Class for 
584         the options used to make it immutable as well as
585         the proper immutable transformer. (groditi)        
586
587     * Class::MOP::Package
588       - {add, has, get, remove}_package_symbol all 
589         now accept a HASH ref argument as well as the
590         string. All internal usages now use the HASH
591         ref version.
592
593     * Class::MOP
594       - MOP.xs does sanity checks on the coderef 
595         to avoid a segfault
596       - is_class_loaded check now uses code that
597         was improved in Moose's ClassName type
598         check (Sartak)
599       - nonsensical (undef, empty, reference) class
600         names now throw a more direct error in
601         load_class (Sartak)
602         - tests for this and other aspects of
603           load_class (Sartak)
604     
605     * Class::MOP
606       Class::MOP::Class      
607       Class::MOP::Method
608       Class::MOP::Method::Wrapped
609       Class::MOP::Attribute
610       - switched usage of reftype to ref because 
611         it is much faster
612
613 0.58 Thurs. May 29, 2008
614     (late night release engineering)--
615     
616     - fixing the version is META.yml, no functional 
617       changes in this release
618
619 0.57 Wed. May 28, 2008
620     !! Several speedups resulting in 20-25% speedups !!
621     || (thanks to konobi, groditi, mst & CataMoose) !!
622
623     * Class::MOP::Class
624       - made get_method_map use list_all_package_symbols
625         instead of manually grabbing each symbol
626       - streamlining &initialize somewhat, since it gets
627         called so much
628         
629     * Class::MOP::Package
630       - made {get, has}_package_symbol not call 
631         &namespace so much 
632       - inlining a few calls to &name with 
633         direct HASH access key access
634       - added get_all_package_symbols to fetch 
635         a HASH of items based on a type filter
636         similar to list_all_package_symbols
637         - added tests for this
638
639     * Class::MOP::Method
640       Class::MOP::Method::Constructor
641       Class::MOP::Method::Generated
642       Class::MOP::Method::Accessor
643       - added more descriptive error message to help 
644         keep people from wasting time tracking an error
645         that is easily fixed by upgrading.
646
647     * Class::MOP::Immutable
648       - Don't inline a destructor unless the user actually
649         needs one
650         - added tests for this
651
652 0.56 Saturday, May 24, 2008
653     * Class::MOP
654       - we now get the &check_package_cache_flag
655         function from MRO::Compat
656       - All XS based functionality now has a 
657         Pure Perl alternative
658         - the CLASS_MOP_NO_XS environment variable
659           can now be used to force non-XS versions
660           to always be used
661
662     * Class::MOP::Attribute
663       - add has_read_method and has_write_method
664       - get_{read,write}_method_ref now wraps the
665         anon-sub ref in the method metaclass when
666         possible
667         - added tests for this
668
669     * Class::MOP::Immutable
670       - added the ability to "wrap" methods when
671         making the class immutable
672
673     * Class::MOP::Class
674       - now handling the edge case of ->meta->identifier
675         dying by wrapping add_package_symbol to specifically
676         allow for it to work.
677         - added tests for this
678
679     * Class::MOP::Attribute
680       Class::MOP::Class
681       Class::MOP::Immutable
682       - any time a method meta object is constructed
683         we make sure to pass the correct package and
684         method name information
685
686     * Class::MOP::Method
687       Class::MOP::Method::Wrapped
688       Class::MOP::Method::Generated
689       Class::MOP::Method::Accessor
690       Class::MOP::Method::Consructor
691       - the &wrap constructor method now requires that a 
692         'package_name' and 'name' attribute are passed. This 
693         is to help support the no-XS version, and will 
694         throw an error if these are not supplied.      
695       - all these classes are now bootstrapped properly
696         and now store the package_name and name attributes
697         correctly as well        
698
699     ~ Build.PL has been removed since the 
700       Module::Install support has been removed
701
702 0.55 Mon. April 28, 2008
703     - All classes now have proper C3 MRO support
704       - added MRO::Compat as a dependency to allow
705         for the C3 MRO support to Just Work in all
706         perl versions
707
708     * Class::MOP::Class
709       - rebless_instance now returns the instance
710         it has just blessed, this is mostly to
711         facilitate chaining
712       - set the attr correctly in rebless_instance
713         when it has no init_arg
714       - tweaked &linear_isa and &class_precedence_list
715         to support c3 classes.
716
717 0.54 Fri. March, 14, 2008
718     * Class::MOP
719       metaclass.pm
720       - making sure that load_class never gets
721         passed a value from @_ or $_ to squash
722         Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
723
724     * Class::MOP::Class
725       - make_{immutable,mutable} now return 1
726         (cause Sartak asked)
727       - improved error handling in ->create method
728       - rebless_instance now takes extra params which
729         will be used to populate values
730         - added tests for this
731
732     * Class::MOP::Object
733       - localizing the Data::Dumper configurations so
734         that it does not pollute others (RT #33509)
735
736     * Class::MOP::Class
737       Class::MOP::Package
738       Class::MOP::Module
739       Class::MOP::Method
740       Class::MOP::Attribute
741       - these classes no longer define their own ->meta,
742         but instead just inherit from Class::MOP::Object
743
744     * Class::MOP::Instance
745       Class::MOP::Immutable
746       - these classes now inherit from Class::MOP::Object
747
748     * t/
749       - fixed the filename length on several
750         test files so we install on VMS better
751         (RT #32295)
752       - fixed incorrect use of catdir when it
753         should be catfile (RT #32385)
754
755 0.53 Thurs. Feb. 14, 1008
756     ~~ several doc. fixes and updates ~~
757
758     * Class::MOP::Class
759       Class::MOP::Method::Constructor
760       Class::MOP::Attribute
761         - making init_arg accept an undefined value
762           to indicate that no constructor args can
763           be passed (thanks to nothingmuch)
764           - added tests for this
765         - added attribute initializer attribute (rjbs)
766
767     * Class::MOP.
768         - making this use the new init_arg => undef
769           feature instead of the silly hack from
770           before (thanks to nothingmuch)
771
772 0.52 Tues. Jan. 22, 2008
773     * Class::MOP::Class
774       - fixed bug in rebless_instance
775         (discovered by ash)
776
777     * Class::MOP::Method::Constructor
778       - removed assumptions about the existence of
779         a &meta method
780
781 0.51 Mon. Jan. 14, 2008
782     ~~~ some misc. doc. fixes ~~~
783     ~~ updated copyright dates ~~
784
785     * Class::MOP
786       - now sets the IS_RUNNING_ON_5_10
787         constant so that we can take advantage
788         of some of the nice bits of 5.10
789
790     * Class::MOP::Class
791       - uses the IS_RUNNING_ON_5_10 flag to
792         optimize the &linearized_isa method
793         and avoid the hack/check for circular
794         inheritence in &class_precedence_list
795       - added rebless_instance method (Sartak)
796         - added tests for this
797
798     * Class::MOP::Immutable
799       - the immutable class now keeps track of
800         the transformer which immutablized it
801
802     * Class::MOP::Instance
803       - added rebless_instance_structure method (Sartak)
804         - added tests for this
805
806 0.50 Fri. Dec. 21, 2007
807     * Class::MOP::Class
808       - fixed bug in immutable to make sure that
809         transformation arguments are saved
810         correctly (mst)
811         - added tests for this
812
813     * Class::MOP::Immutable
814       - fixed a bug (see above)
815
816     * Class::MOP::Attribute
817       - some doc updates
818
819 0.49 Fri. Dec. 14, 2007
820     !! Class::MOP now loads 2 x faster  !!
821     !! with XS speedups (thanks konobi) !!
822
823     * Class::MOP
824       - removed the dependency on B
825       - added two XS functions (thanks konobi)
826         - get_code_info($code) which replaces all
827           the B fiddling we were doing with
828           faster/leaner XS level fiddling
829         - check_package_cache_flag($pkg_name) which
830           returns the PL_sub_generation variable to
831           be used to help manage method caching.
832
833           NOTE:
834           In 5.10 or greater this will actually
835           use the mro::get_pkg_gen instead to give
836           even more accurate caching information.
837           blblack++ for that stuff :)
838
839     * Class::MOP::Class
840       - added the &subclasses method (thanks rlb)
841       - added the update_package_cache_flag and
842         reset_package_cache_flag which help keep
843         track of when we need to re-fetch the
844         method map.
845       - Several small improvements to take advantage
846         of the new method map caching features
847
848 0.48 Mon. Nov. 26, 2007
849     * Class::MOP::Attribute
850       - fixed get_read/write_method to handle the
851         HASH ref case, which makes the
852         get_read/write_method_ref handle it too.
853         - added more tests for this
854
855 0.47 Sat. Nov. 24, 2007
856     * Class::MOP::Attribute
857       - fixed misspelling in get_write_method_ref
858         - added more tests for this
859
860 0.46 Fri. Nov. 23, 2007
861     * Class::MOP::Class
862       - added the linearized_isa method instead of constantly
863         pruning duplicate classes (this will be even more
864         useful in the 5.10-compat version coming soon)
865
866     * Class::MOP::Attribute
867       - added the get_read_method_ref and get_write_method_ref
868         methods which allow you to retrieve a CODE ref which
869         can always be used to read or write an attribute.
870
871 0.45 Thurs. Nov. 13, 2007
872     * Class::MOP::Attribute
873       - Fix error message on confess (groditi)
874
875 0.44 Thurs. Nov. 13, 2007
876     - Apparently I didn't make dist correctly (groditi)
877
878 0.43 Thurs. Nov. 13, 2007
879     * Class::MOP
880       - Add support for the 'builder' attribute (groditi)
881
882     * Class::MOP::Class
883       - optimise metaclass-already-exists check in
884         construct_class_instance (groditi)
885       - duplicate check into initialize to save a
886         call through (groditi)
887
888     * Class::MOP::Attribute
889       - Add support for the 'builder' attribute (groditi)
890       - Make predicates check for the existence of a value, not whether
891         it is defined (groditi)
892
893     * Class::MOP::Instance
894       - Make predicates check for the existence of a value, not whether
895         it is defined (groditi)
896
897     * Class::MOP::Method::Accessor
898       - made this a subclass of Class::MOP::Method::Generated
899         - removed the relevant attributes
900
901     * Class::MOP::Method::Constructor
902       - fixed the cached values we had to be more sane
903       - made this a subclass of Class::MOP::Method::Generated
904       - fixed generated constructor so it properly handles
905         subclasses now.
906         - added tests for this
907       - added the option to allow for both inlined and
908         non-inlined constructors.
909       - Update inlined methods for builder and predicate changes (groditi)
910
911     * Class::MOP::Method::Generated
912       - added this class as an abstract base for the
913         Class::MOP::Method::{Constructor,Accessor} classes
914         - added tests for this
915
916     *t/
917       - Alter tests (005, 014 020, 021) for new builder addition (groditi)
918       - Tests for new predicate behavior (and corrections to old tests) (groditi)
919
920     *examples/
921       - Update ArrayRef based class example to work with predicate changes
922
923 0.42 Mon. July 16, 2007
924     !!! Horray for mst, he fixed it !!!
925
926     * Class::MOP::Package
927       - alter symbol table handling to deal with 5.8.x and 5.9.x
928
929     * t/
930       - Get rid of the crappy workaround from 0.40/41
931
932 0.41 Sun. July 15, 2007
933     * t/
934         Arghh!!! My TODO test didn't work, so I handle
935         it manually now so that people can use this
936         with 5.9.5/bleadperl without issue.
937
938 0.40 Tues, July 3, 2007
939     * t/
940       ~ marked a test in 003_methods.t as TODO
941         for perl 5.9.5 (this test is irrelvant to
942         the module functioning on 5.9.5 for the most
943         part anyway)
944
945 0.39 Mon. June 18, 2007
946     * Class::MOP::Immutable
947       - added make_metaclass_mutable + docs (groditi)
948       - removed unused variable
949       - added create_immutable_transformer
950         necessary for sane overloading of immutable behavior
951          - tests for this (groditi)
952
953     * Class::MOP::Class
954       - Immutability can now be undone,
955         added make_mutable + tests + docs (groditi)
956       - Massive changes to the way Immutable is done
957         for details see comments next to make_immutable
958         This fixes a bug where custom metaclasses broke
959         when made immutable. We are now keeping one immutable
960         metaclass instance per metaclass instead of just one
961         to prevent isa hierarchy corruption. Memory use will go
962         up, but I suspect it will be neglible.
963          - New tests added for this behavior.  (groditi)
964
965 0.38 Thurs. May 31, 2007
966     ~~ More documentation updates ~~
967
968     * Class::MOP::Package
969       - we now deal with stub methods properly
970         - added tests for this
971       - fixed some tests failing on 5.9.5 (thanks blblack)
972
973     * Class::MOP::Attribute
974       - added get_read_method and get_write_method
975         thanks to groditi for this code, tests
976         and docs.
977         - added tests and POD for this
978
979     * Class::MOP::Class
980       - fixed RT issue #27329, clone object now
981         handles undef values correctly.
982         - added tests for this
983       - Corrected anon-class handling so that they
984         will not get reaped when instances still
985         exist which need to reference them. This is
986         the correct behavior, hopefully this is an
987         obscure enough feature that there are not too
988         many work arounds out in the wild.
989         - added tests for this by groditi
990         - updated docs to explain this
991
992     * metaclass
993       - load custom metaclasses automatically (thanks groditi)
994         - added tests for this behavior
995
996 0.37 Sat. March 10, 2007
997     ~~ Many, many documentation updates ~~
998
999     * Class::MOP
1000       - added &load_class and &is_class_loaded
1001         - added tests and docs for these
1002
1003     * Class::MOP::Attribute
1004       - default now checks the instance with defined to
1005         avoid setting off bool-overloads (found by Carl Franks)
1006
1007 0.37_002
1008     * /t
1009       - bad name in a test, causing meaningless failuress.
1010         No other changes.
1011
1012 0.37_001
1013
1014     ~~ GLOBAL CHANGES ~~
1015     - All attribute names are now consistent and follow Perl 6
1016       style (prefixed with the sigil, and ! as the twigil for
1017       private attrs). This should not affect any code, unless
1018       you broke encapsulation, in which case, it is your problem
1019       anyway.
1020
1021     !! Class::MOP::Class::Immutable has been removed
1022
1023     * Class::MOP::Method::Constructor
1024       - this has been moved out of Class::MOP::Class::Immutable
1025         and is a proper subclass of Class::MOP::Method now.
1026
1027     * Class::MOP::Class
1028       - this module now uses Class::MOP::Immutable for the
1029         immutable transformation instead of
1030         Class::MOP::Class::Immutable.
1031
1032     + Class::MOP::Immutable
1033       - this module now controls the transformation from a mutable
1034         to an immutable version of the class. Docs for this will
1035         be coming eventually.
1036
1037
1038 0.36 Sun. Nov. 5, 2006
1039     * Class::MOP::Class
1040       - added a few 'no warnings' lines to keep annoying
1041         (and meaningless) warnings from chirping during
1042         global destruction.
1043
1044     * Class::MOP
1045       - some more bootstrapping is now done on the new
1046         classes
1047
1048     * Class::MOP::Class::Immutable
1049       *** API CHANGE ***
1050       - constructor generation is now handled by
1051         the Class::MOP::Method::Constructor class
1052
1053     * Class::MOP::Method::Constructor
1054       - created this to handle constructor generation
1055         in Class::MOP::Class::Immutable
1056
1057     * Class::MOP::Attribute
1058       *** API CHANGE ***
1059       - attributes now delegate to the
1060         Class::MOP::Method::Accessor to generate
1061         accessors
1062
1063     * Class::MOP::Method::Accessor
1064       - all accessor generation functions from
1065         Class::MOP::Attribute have been moved here
1066
1067 0.35 Sat. Sept. 30, 2006
1068
1069     * scripts/class_browser.pl
1070       - initial prototype of a class browser, more
1071         on this to come. Comments and patches are
1072         very much welcome.
1073
1074     * Class::MOP
1075       - All Class::MOP::* accessors are no longer
1076         re-generated in the bootstrap, instead
1077         they are aliased from the originals
1078         - fixed tests to reflect
1079       - added Class::MOP::Method (and its subclasses)
1080         to the bootstrap
1081         - adjusted tests for this
1082       - added the Class::MOP::Instance attributes
1083         to the bootstrap
1084
1085     * Class::MOP::Method
1086       *** API CHANGE ***
1087       - methods are no longer blessed CODE refs
1088         but are actual objects which can be CODE-ified
1089         - adjusted tests to compensate
1090         - adjusted docs for this
1091
1092     * Class::MOP::Class
1093       - changed how methods are dealt with to
1094         encapsulate most of the work into the
1095         &get_method_map method
1096       - made several adjustments for the change
1097         in Class::MOP::Method
1098       - &add_attribute now checks if you are adding
1099         a duplicate name, and properly removes the
1100         old one before installing the new one
1101         - added tests for this
1102         - adjusted docs for this
1103
1104     * Class::MOP::Class::Immutable
1105       - added caching of &get_method_map
1106       - fixed issue with &get_package_symbol
1107       - cleaned up the methods that die (patch by David Wheeler)
1108
1109     * Class::MOP::Package
1110       - added filtering capabilities to
1111         &list_all_package_symbols
1112
1113 0.34 Sat. Aug. 26, 2006
1114     * Class::MOP::Class
1115       - added the %:methods attribute, which like
1116         the $:version and such just actually goes
1117         to the symbol table to get it's stuff.
1118         However, it makes the MOP more complete.
1119      ** API CHANGE **
1120       - The &create method now requires that all
1121         but the package name now is passed in as
1122         named parameters. See docs for more info.
1123         - updated docs and tests for this
1124
1125     * Class::MOP::Object
1126       - added &dump method to easily Data::Dumper
1127         an object
1128
1129     * Class::MOP
1130       - cleaned up the initialization of attributes
1131         which do not store things in the instance
1132       - added the %:methods attribute definition to
1133         the bootstrap
1134
1135     ~ lots of misc. test cleanup
1136
1137 0.33 Sat. Aug. 19, 2006
1138     * Class::MOP::Class
1139       - moved the metaclass cache out of here
1140         and it is now in Class::MOP itself.
1141
1142     * Class::MOP
1143       - moved all the metaclass cache stuff here
1144         - fixed all tests for this
1145
1146     * Class::MOP::Attribute
1147       - reference values (other than CODE refs)
1148         are no longer allowed for defaults
1149         - added tests for this
1150
1151     * Class::MOP::Package
1152       - fixed an issue with perl 5.8.1 and how it deals
1153         with symbol tables. The namespace hash is now
1154         always reloaded from the symbol table.
1155
1156     ~ lots of misc. documentation cleanup
1157
1158 0.32 Sat. Aug. 12, 2006
1159     + added Class::MOP::Object so that the
1160       metamodel is more complete (and closer
1161       to what Perl 6 will probably be).
1162
1163     * Class::MOP::Package
1164       - refactored entire class, this is now
1165         the primary gateway between the metaclass
1166         and the Perl 5 symbol table
1167         - added many tests for this
1168       - this class is now a subclass of
1169         Class::MOP::Object
1170         - added some tests to reflect this
1171
1172     * Class::MOP::Class
1173       - refactored all symbol table access to
1174         use Class::MOP::Package methods instead
1175
1176     * Class::MOP::Module
1177       - adding the $:version attribute in the bootstrap
1178         so that Module has a version as an attribute
1179         - see comment in Class::MOP for details
1180       - added the $:authority attribute to this module
1181         as well as an &identifier method, to bring us
1182         ever closer to Perl 6 goodness
1183         - I have added $AUTHORITY to all the modules
1184         - added tests for this
1185
1186     * Class::MOP::Instance
1187       - added &deinitialize_slot for removing slots
1188         from an instance
1189         - added tests for this
1190
1191     * Class::MOP::Attribute
1192       - added support for &deinitialize_slot for removing
1193         slots from an instance
1194         - added tests for this
1195
1196 0.31 Sat. July 15, 2006
1197
1198     * Class::MOP::Class
1199       - added &find_method_by_name to locate a method
1200         anywhere within the class hierarchy
1201
1202     * Class::MOP::Attribute
1203       - added &set_value and &get_value for getting
1204         the value of the attribute for a particular
1205         instance.
1206
1207 0.30 Wed. July 5, 2006
1208     ---------------------------------------
1209     This is the first version of Class::MOP
1210     to introduce the immutable features which
1211     will be used for optimizating the MOP.
1212     This support should still be considered
1213     experimental, but moving towards stability.
1214     ---------------------------------------
1215
1216     * Created Class::MOP::Class::Immutable
1217
1218     * Created the Class::MOP::Package and
1219       Class::MOP::Module classes to more
1220       closely conform to Perl 6's meta-model
1221
1222     * Class::MOP::Class
1223       - now inherits from Class::MOP::Module
1224       - several methods moved to ::Module and
1225         ::Package and now inherited
1226         - added tests for this
1227
1228     * Class::MOP::Instance
1229       - added an is_inlinable method to allow other
1230         classes to check before they attempt to optimize.
1231       - added an inline_create_instance to inline
1232         instance creation (of course)
1233
1234     ** API CHANGE **
1235       - the Class::MOP::Class::*_package_variable
1236         methods are all now methods of Class::MOP::Package
1237         and called *_package_symbol instead. This is
1238         because they are now more general purpose symbol
1239         table manipulation methods.
1240
1241 0.29_02 Thurs. June 22, 2006
1242     ++ DEVELOPER RELEASE ++
1243     * Class::MOP::Class
1244       - small change in &create so that it behaves
1245         properly when inherited
1246       - small fix to &clone_instance
1247
1248 0.29_01 Fri. May 12, 2006
1249     ++ DEVELOPER RELEASE ++
1250       - This release works in combination with
1251         Moose 0.09_01, it is a developer release
1252         because it introduces a new instance
1253         sub-protocol and has not yet been
1254         optimized.
1255
1256     * Class::MOP::Class
1257       - anon-classes are now properly garbage collected
1258         - added tests for this
1259       - improved method modifier wrapping
1260
1261     * Class::MOP::Instance
1262       - added new instance protocol
1263         - added tests for this
1264       - changed all relevant modules and examples
1265         - Class::MOP::Class
1266         - Class::MOP::Attribute
1267         - examples/*
1268
1269     * metaclass
1270       - you no longer need to specify the metaclass
1271         itself, if it is not there, Class::MOP::Class
1272         is just assumed
1273         - updated tests for this
1274
1275     * examples/
1276       - added ArrayBasedStorage example to show
1277         instance storage using ARRAY refs instead of
1278         HASH refs.
1279         - added tests for this
1280       - InsideOutClass is totally revised using the
1281         new instance protocol
1282         - added more tests for this
1283
1284 0.26 Mon. April 24, 2006
1285     * Class::MOP::Class
1286       - added find_attribute_by_name method
1287         - added tests and docs for this
1288       - some small optimizations
1289
1290     * Class::MOP::Attribute
1291       - some small optimizations
1292
1293 0.25 Thurs. April 20, 2006
1294     * Class::MOP::Class
1295       - added create_anon_class for creating anonymous classes
1296         - added tests for this
1297       - added get_all_metaclasses, get_all_metaclass_names
1298         and get_all_metaclass_instances method to allow
1299         access to all the cached metaclass objects.
1300       - attribute slot initialization is now the responsibility
1301         of the attribute itself, and construct_instance now
1302         delegates appropriately
1303
1304     * Class::MOP::Attribute
1305       - attribute slot initialization is now the responsibility
1306         of the attribute itself, so we added a method for it
1307         called initialize_instance_slot
1308
1309     * examples/
1310       - adjusted all the examples to use the new attribute
1311         initialize_instance_slot method
1312
1313 0.24 Tues. April 11, 2006
1314     * Class::MOP::Class
1315       - cleaned up how the before/after/around method
1316         modifiers get named with Sub::Name
1317
1318 0.23 Thurs. March 30, 2006
1319         * Class::MOP::Class
1320           - fixed the way attribute defaults are handled
1321             during instance construction (bug found by chansen)
1322
1323         * Class::MOP::Attribute
1324           - read-only accessors ('reader') will now die if
1325             passed more than one argument (attempting to write
1326             to them basically)
1327               - added tests for this
1328               - adjusted all /example files to comply
1329
1330 0.22 Mon. March 20, 2006
1331     * Class::MOP::Class
1332       - localized $@ in the *_package_variable functions
1333         because otherwise, it does ugly things in Moose.
1334           - added test case for this
1335
1336 0.21 Wed. March 15, 2006
1337     * Class::MOP::Class
1338       - fixed issue where metaclasses are reaped from
1339         our cache in global destruction, and so are not
1340         available in DESTORY calls
1341
1342 0.20 Thurs. March 2, 2006
1343     - removed the dependency for Clone since
1344       we no longer to deep-cloning by default.
1345
1346     * Class::MOP::Method
1347       - added &package_name, &name and
1348         &fully_qualified_name methods, some of
1349         which were formerly private subs in
1350         Class::MOP::Class
1351
1352     * Class::MOP::Method::Wrapped
1353       - allows for a method to be wrapped with
1354         before, after and around modifiers
1355           - added tests and docs for this feature
1356
1357     * Class::MOP::Class
1358       - improved &get_package_symbol
1359           - &version and &superclasses now use it
1360       - methods are now blessed into Class::MOP::Method
1361         whenever possible
1362       - added methods to install CLOS-style method modifiers
1363          - &add_before_method_modifier
1364          - &add_after_method_modifier
1365          - &add_around_method_modifier
1366              - added tests and docs for these
1367       - added &find_next_method_by_name which finds the
1368         equivalent of SUPER::method_name
1369
1370 0.12 Thurs. Feb 23, 2006
1371     - reduced the dependency on B, no need to always
1372       have the latest
1373
1374     * examples/
1375       - added docs to the C3 method dispatch order test
1376       - fixed missing Algorithm::C3 dependency by making
1377         the test skip if it is not installed
1378
1379 0.11 Mon Feb. 20, 2006
1380     * examples/
1381       - added example of changing method dispatch order to C3
1382
1383     * Class::MOP::Class
1384       - changed how clone_instance behaves, it now only does a
1385         shallow clone (see docs for more details)
1386         - added docs and tests
1387
1388 0.10 Tues Feb. 14, 2006
1389     ** This release was mostly about writing more tests and
1390        cleaning out old and dusty code, the MOP should now
1391        be considered "ready to use".
1392
1393     - adding more tests to get coverage up a little higher,
1394       mostly testing errors and edge cases.
1395       - test coverage is now at 99%
1396
1397     * Class::MOP
1398       - no longer optionally exports to UNIVERSAL::meta or
1399         creates a custom metaclass generator, use the
1400         metaclass pragma instead.
1401
1402     * Class::MOP::Class
1403       - fixed a number of minor issues which came up in the
1404         error/edge-case tests
1405
1406     * Class::MOP::Attribute
1407       - fixed a number of minor issues which came up in the
1408         error/edge-case tests
1409
1410     * examples/
1411       - fixing the AttributesWithHistory example, it was broken.
1412
1413 0.06 Thurs Feb. 9, 2006
1414     * metaclass
1415       - adding new metaclass pragma to make setting up the
1416         metaclass a little more straightforward
1417
1418     * Class::MOP
1419       - clean up bootstrapping to include more complete
1420         attribute definitions for Class::MOP::Class and
1421         Class::MOP::Attribute (accessors, readers, writers,
1422         etc.) ... it is redundant, but is useful meta-info
1423         to have around.
1424
1425     * Class::MOP::Class
1426       - fixing minor meta-circularity issue with &meta, it
1427         is now more useful for subclasses
1428       - added &get_attribute_map as an accessor for the
1429         hash of attribute meta objects
1430       - &compute_all_applicable_attributes now just returns
1431         the attribute meta-object, rather than the HASH ref
1432         since all the same info can be gotten from the
1433         attribute meta-object itself
1434           - updated docs & tests to reflect
1435       - added &clone_instance method which does a deep clone
1436         of the instance structure created by &construct_instance
1437           - added docs & tests for this
1438           - added Clone as a dependency
1439       - added &new_object and &clone_object convience methods to
1440         return blessed new or cloned instances
1441           - they handle Class::MOP::Class singletons correctly too
1442           - added docs & tests for this
1443       - cleaned up the &constuct_class_instance so that it behaves
1444         more like &construct_instance (and managed the singletons too)
1445       - added the &check_metaclass_compatibility method to make sure
1446         that metaclasses are upward and downward compatible.
1447           - added tests and docs for this
1448
1449     * examples/
1450       - adjusting code to use the &Class::MOP::Class::meta
1451         fix detailed above
1452       - adjusting code to use the metaclass pragma
1453
1454 0.05 Sat Feb. 4, 2006
1455     * Class::MOP::Class
1456       - added the &attribute_metaclass and &method_metaclass
1457         attributes which contain a metaclass name to use for
1458         attributes/methods respectively
1459
1460     * Class::MOP
1461       - bootstrap additional attributes for Class::MOP::Class
1462
1463     * examples/
1464       - adjusted the example code and tests to use the new
1465         &attribute_metaclass feature of Class::MOP::Class
1466       - added new example:
1467         - LazyClass
1468
1469 0.04 Fri Feb. 3, 2006
1470     * Class::MOP::Class
1471       - some documentation suggestions from #perl6
1472
1473     * Class::MOP::Attribute
1474       - improved error messages
1475
1476     * examples/
1477       - added new examples:
1478         - AttributesWithHistory
1479         - ClassEncapsultedAttributes
1480
1481 0.03 Fri Feb. 3, 2006
1482     - converted to Module::Build instead of EU::MM
1483
1484     * Class::MOP::Attribute
1485       - refactored method generation code
1486       - attributes are now associated with class directly
1487
1488     * examples/
1489       - refactored the InsideOut example to take advantage
1490         of the Class::MOP::Attribute refactoring
1491       - changed example files to .pod files and hide thier
1492         package names from PAUSE (I don't want to own these
1493         namespaces really, they are just examples)
1494
1495 0.02 Thurs Feb. 2, 2006
1496     - moving examples from t/lib/* to examples/*
1497         - adding POD documentation to the examples
1498
1499 0.01 Thurs Feb. 2, 2006
1500     - Initial release