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