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