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