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