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