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