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