Bump all the modules to 0.67
[gitmo/Class-MOP.git] / Changes
1 Revision history for Perl extension Class-MOP.
2
3 0.67
4     * Class::MOP::Class
5       - Call a method on the class after setting the superclass list
6         so that we can get Perl to detect cycles before MRO::Compat
7         spirals into an infinite loop (sartak)
8         - Reported by Schwern, [rt.cpan.org #39001]
9       - In create(), pass unused options on to initialize()
10         - added test for this
11
12 0.66 Sat September 20, 2008
13     !! This release has an incompatible change regarding !!
14        introspection of a class's method with Class::MOP::Class !!
15
16     * Tests and XS
17       - We (us maintainers) now run all tests with XS and then without
18         XS, which should help us catch skew between the XS/pure Perl
19         code. (Dave Rolsky)
20
21     * Class::MOP::Class
22       ! The alias_method method has been deprecated. It now simply
23         calls add_method instead. There is no distinction between
24         aliased methods and "real" methods.
25
26         This means that methods added via alias_method now show up as
27         part of the class's method list/map. This is a backwards
28         incompatible change, but seems unlikely to break any
29         code. Famous last words. (Dave Rolsky)
30
31     * Class::MOP::Class
32       - Fixed the spelling of "compatibility", but we still have a
33         "check_metaclass_compatability" method for backwards
34         compatibility.
35
36 0.65 Mon September 1, 2008
37     For those not following the series of dev releases, the changes
38     from 0.64 from 0.67 can mostly be summed up as a lot performance
39     improvements by nothingmuch, including new optional XS versions of
40     some methods. Also, Class::MOP now works _without_ any XS modules,
41     for sad systems without a compiler.
42
43     * Class::MOP::Method
44       - Added name and package_name XS accessors, and make sure all
45         the XS and Perl versions work the same way. (Dave Rolsky)
46
47     * MOP.xs
48       - The XS versions of various methods just returned undef when
49         called class methods, rather than dying like the pure Perl
50         versions. (Dave Rolsky)
51
52 0.64_07 Fri August 29, 2008
53     * Class::MOP
54       - Silenced warnings that managed to break Moose tests when XS
55         was loaded. (Dave Rolsky)
56       - Some XS versions of methods were ignored because of typos in
57         MOP.xs. (Dave Rolsky)
58
59 0.64_06 Mon August 25, 2008
60     * Class::MOP (MOP.xs)
61       - Another MS VC++ fix, cannot declare a variable in the middle
62         of a scope (Taro Nishino).
63
64 0.64_05 Sun August 24, 2008
65     * Class::MOP
66       - None of the dev releases actually loaded the XS properly, but
67         we silently fell back to the pure Perl version of the
68         code. (Dave Rolsky)
69
70     * Class::MOP (MOP.xs)
71       - Replaced some code that used functions not available on Visual
72         C++ with some Perl XS API bits (Dave Rolsky).
73
74 0.64_04 Sat August 23, 2008
75     * Class::MOP::Class
76       - Workaround a bug in 5.8.1's goto sub (nothingmuch)
77
78     * pod.t and pod_coveraget.t
79       - These are no longer shipped with the tarball because of bogus
80         failures from CPAN testers. (Dave Rolsky)
81
82 0.64_03 Thu August 21, 2008
83     * Class::MOP::Package
84       - Some (legit) code was misparsed by earlier 5.8.x
85         releases. (nothingmuch)
86
87     * Class::MOP
88       - Fix a constant in void context warning (nothingmuch)
89
90 0.64_02 Thu August 21, 2008
91     * Makefile.PL and Class::MOP
92       - Explicitly require Perl 5.8.0+ (Dave Rolsky)
93
94     * Makefile.PL
95       - Add missing prereqs that got lost in the switch away from
96         Module::Install.
97
98     * Class::MOP::Instance
99       - New method - get_all_attributes (nothingmuch)
100
101 0.64_01 Wed August 20, 2008
102     * Makefile.PL
103       - We now check to see if you have a compiler. If you don't, the
104         module installs without some XS bits, but will work the same
105         as with XS. This should make it easier to install on platforms
106         without a compiler (like Windows). (Dave Rolsky)
107
108     * many modules
109       - Perl 6 style attribute naming replaced with sane style ('methods', not
110         '%!methods'). These changes should not impact any existing API uses.
111         (nothingmuch).
112
113     * many modules
114       - Quite a number of optimizations based on profiling, including
115         allowing constructors to take hash references instead of
116         hashes, duplicating some frequently used code in XS, and
117         making constructors immutable. These changes should not impact
118         any existing API uses. (nothingmuch)
119
120     * Many modules
121       - Constructors now respect the meta attributes of their subclasses,
122         facilitating MOP extensibility. More related changes will happen in the
123         next several releases. (nothingmuch)
124
125     * Class::MOP::Class
126       - New method - get_all_methods, replaces the deprecated
127         compute_all_applicable_methods. get_all_attributes provided for
128         consistency (nothingmuch)
129       - New method - wrap_method was refactored out of get_method_map
130         (nothingmuch)
131       - New API for meta instance invalidation - invalidate_meta_instance,
132         invalidate_meta_instances, add_dependent_meta_instance,
133         remove_dependent_meta_instance, called automatically when attribute
134         definitions change and allows notification of dependent subclasses.
135         (nothingmuch)
136
137 0.64 Sun August 3, 2008
138     * Class::MOP::Immutable
139       - fixing subtle edge case in immutable when you
140         call ->meta (stevan)
141       - clean up option processing (nothingmuch)
142
143     * Class::MOP::Instance
144       - inlined initialize slot didn't match
145         non-inlined (nothingmuch)
146
147 0.63 Mon July 7, 2008
148     * Class::MOP
149       - load_class will initialize a metaclass even if
150         the class is already loaded (sartak)
151       - load_class now returns the metaclass instance
152         instead of just 1 (sartak)
153
154     * elsewhere
155       - better error messages (sartak and Dave Rolsky)
156
157 0.62 Wed June 18, 2008
158     - in is_class_loaded, recognize scalar references (as opposed to globs) in
159       the symbol table as methods (these are optimized constant subs)
160
161 0.61 Fri. June 13, 2008
162     - Okay, lets give this another try and see if PAUSE 
163       recognizes it correct this time.
164
165 0.60 Thurs. Jun 12, 2008
166     - Fixed a version number issue by bumping all modules
167       to 0.60.
168
169 0.59 Thurs. Jun 12, 2008
170     !! Several fixes resulting in yet another 25-30% speedup !!
171
172     * Class::MOP::Class
173       - now stores the instance of the instance 
174         metaclass to avoid needless recomputation
175         and deletes it when the cache is blown
176       - introduce methods to query Class::MOP::Class for 
177         the options used to make it immutable as well as
178         the proper immutable transformer. (groditi)        
179
180     * Class::MOP::Package
181       - {add, has, get, remove}_package_symbol all 
182         now accept a HASH ref argument as well as the
183         string. All internal usages now use the HASH
184         ref version.
185
186     * Class::MOP
187       - MOP.xs does sanity checks on the coderef 
188         to avoid a segfault
189       - is_class_loaded check now uses code that
190         was improved in Moose's ClassName type
191         check (Sartak)
192       - nonsensical (undef, empty, reference) class
193         names now throw a more direct error in
194         load_class (Sartak)
195         - tests for this and other aspects of
196           load_class (Sartak)
197     
198     * Class::MOP
199       Class::MOP::Class      
200       Class::MOP::Method
201       Class::MOP::Method::Wrapped
202       Class::MOP::Attribute
203       - switched usage of reftype to ref because 
204         it is much faster
205
206 0.58 Thurs. May 29, 2008
207     (late night release engineering)--
208     
209     - fixing the version is META.yml, no functional 
210       changes in this release
211
212 0.57 Wed. May 28, 2008
213     !! Several speedups resulting in 20-25% speedups !!
214     || (thanks to konobi, groditi, mst & CataMoose) !!
215
216     * Class::MOP::Class
217       - made get_method_map use list_all_package_symbols
218         instead of manually grabbing each symbol
219       - streamlining &initialize somewhat, since it gets
220         called so much
221         
222     * Class::MOP::Package
223       - made {get, has}_package_symbol not call 
224         &namespace so much 
225       - inlining a few calls to &name with 
226         direct HASH access key access
227       - added get_all_package_symbols to fetch 
228         a HASH of items based on a type filter
229         similar to list_all_package_symbols
230         - added tests for this
231
232     * Class::MOP::Method
233       Class::MOP::Method::Constructor
234       Class::MOP::Method::Generated
235       Class::MOP::Method::Accessor
236       - added more descriptive error message to help 
237         keep people from wasting time tracking an error
238         that is easily fixed by upgrading.
239
240     * Class::MOP::Immutable
241       - Don't inline a destructor unless the user actually
242         needs one
243         - added tests for this
244
245 0.56 Saturday, May 24, 2008
246     * Class::MOP
247       - we now get the &check_package_cache_flag
248         function from MRO::Compat
249       - All XS based functionality now has a 
250         Pure Perl alternative
251         - the CLASS_MOP_NO_XS environment variable
252           can now be used to force non-XS versions
253           to always be used
254
255     * Class::MOP::Attribute
256       - add has_read_method and has_write_method
257       - get_{read,write}_method_ref now wraps the
258         anon-sub ref in the method metaclass when
259         possible
260         - added tests for this
261
262     * Class::MOP::Immutable
263       - added the ability to "wrap" methods when
264         making the class immutable
265
266     * Class::MOP::Class
267       - now handling the edge case of ->meta->identifier
268         dying by wrapping add_package_symbol to specifically
269         allow for it to work.
270         - added tests for this
271
272     * Class::MOP::Attribute
273       Class::MOP::Class
274       Class::MOP::Immutable
275       - any time a method meta object is constructed
276         we make sure to pass the correct package and
277         method name information
278
279     * Class::MOP::Method
280       Class::MOP::Method::Wrapped
281       Class::MOP::Method::Generated
282       Class::MOP::Method::Accessor
283       Class::MOP::Method::Consructor
284       - the &wrap constructor method now requires that a 
285         'package_name' and 'name' attribute are passed. This 
286         is to help support the no-XS version, and will 
287         throw an error if these are not supplied.      
288       - all these classes are now bootstrapped properly
289         and now store the package_name and name attributes
290         correctly as well        
291
292     ~ Build.PL has been removed since the 
293       Module::Install support has been removed
294
295 0.55 Mon. April 28, 2008
296     - All classes now have proper C3 MRO support
297       - added MRO::Compat as a dependency to allow
298         for the C3 MRO support to Just Work in all
299         perl versions
300
301     * Class::MOP::Class
302       - rebless_instance now returns the instance
303         it has just blessed, this is mostly to
304         facilitate chaining
305       - set the attr correctly in rebless_instance
306         when it has no init_arg
307       - tweaked &linear_isa and &class_precedence_list
308         to support c3 classes.
309
310 0.54 Fri. March, 14, 2008
311     * Class::MOP
312       metaclass.pm
313       - making sure that load_class never gets
314         passed a value from @_ or $_ to squash
315         Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
316
317     * Class::MOP::Class
318       - make_{immutable,mutable} now return 1
319         (cause Sartak asked)
320       - improved error handling in ->create method
321       - rebless_instance now takes extra params which
322         will be used to populate values
323         - added tests for this
324
325     * Class::MOP::Object
326       - localizing the Data::Dumper configurations so
327         that it does not pollute others (RT #33509)
328
329     * Class::MOP::Class
330       Class::MOP::Package
331       Class::MOP::Module
332       Class::MOP::Method
333       Class::MOP::Attribute
334       - these classes no longer define their own ->meta,
335         but instead just inherit from Class::MOP::Object
336
337     * Class::MOP::Instance
338       Class::MOP::Immutable
339       - these classes now inherit from Class::MOP::Object
340
341     * t/
342       - fixed the filename length on several
343         test files so we install on VMS better
344         (RT #32295)
345       - fixed incorrect use of catdir when it
346         should be catfile (RT #32385)
347
348 0.53 Thurs. Feb. 14, 1008
349     ~~ several doc. fixes and updates ~~
350
351     * Class::MOP::Class
352       Class::MOP::Method::Constructor
353       Class::MOP::Attribute
354         - making init_arg accept an undefined value
355           to indicate that no constructor args can
356           be passed (thanks to nothingmuch)
357           - added tests for this
358         - added attribute initializer attribute (rjbs)
359
360     * Class::MOP.
361         - making this use the new init_arg => undef
362           feature instead of the silly hack from
363           before (thanks to nothingmuch)
364
365 0.52 Tues. Jan. 22, 2008
366     * Class::MOP::Class
367       - fixed bug in rebless_instance
368         (discovered by ash)
369
370     * Class::MOP::Method::Constructor
371       - removed assumptions about the existence of
372         a &meta method
373
374 0.51 Mon. Jan. 14, 2008
375     ~~~ some misc. doc. fixes ~~~
376     ~~ updated copyright dates ~~
377
378     * Class::MOP
379       - now sets the IS_RUNNING_ON_5_10
380         constant so that we can take advantage
381         of some of the nice bits of 5.10
382
383     * Class::MOP::Class
384       - uses the IS_RUNNING_ON_5_10 flag to
385         optimize the &linearized_isa method
386         and avoid the hack/check for circular
387         inheritence in &class_precedence_list
388       - added rebless_instance method (Sartak)
389         - added tests for this
390
391     * Class::MOP::Immutable
392       - the immutable class now keeps track of
393         the transformer which immutablized it
394
395     * Class::MOP::Instance
396       - added rebless_instance_structure method (Sartak)
397         - added tests for this
398
399 0.50 Fri. Dec. 21, 2007
400     * Class::MOP::Class
401       - fixed bug in immutable to make sure that
402         transformation arguments are saved
403         correctly (mst)
404         - added tests for this
405
406     * Class::MOP::Immutable
407       - fixed a bug (see above)
408
409     * Class::MOP::Attribute
410       - some doc updates
411
412 0.49 Fri. Dec. 14, 2007
413     !! Class::MOP now loads 2 x faster  !!
414     !! with XS speedups (thanks konobi) !!
415
416     * Class::MOP
417       - removed the dependency on B
418       - added two XS functions (thanks konobi)
419         - get_code_info($code) which replaces all
420           the B fiddling we were doing with
421           faster/leaner XS level fiddling
422         - check_package_cache_flag($pkg_name) which
423           returns the PL_sub_generation variable to
424           be used to help manage method caching.
425
426           NOTE:
427           In 5.10 or greater this will actually
428           use the mro::get_pkg_gen instead to give
429           even more accurate caching information.
430           blblack++ for that stuff :)
431
432     * Class::MOP::Class
433       - added the &subclasses method (thanks rlb)
434       - added the update_package_cache_flag and
435         reset_package_cache_flag which help keep
436         track of when we need to re-fetch the
437         method map.
438       - Several small improvements to take advantage
439         of the new method map caching features
440
441 0.48 Mon. Nov. 26, 2007
442     * Class::MOP::Attribute
443       - fixed get_read/write_method to handle the
444         HASH ref case, which makes the
445         get_read/write_method_ref handle it too.
446         - added more tests for this
447
448 0.47 Sat. Nov. 24, 2007
449     * Class::MOP::Attribute
450       - fixed misspelling in get_write_method_ref
451         - added more tests for this
452
453 0.46 Fri. Nov. 23, 2007
454     * Class::MOP::Class
455       - added the linearized_isa method instead of constantly
456         pruning duplicate classes (this will be even more
457         useful in the 5.10-compat version coming soon)
458
459     * Class::MOP::Attribute
460       - added the get_read_method_ref and get_write_method_ref
461         methods which allow you to retrieve a CODE ref which
462         can always be used to read or write an attribute.
463
464 0.45 Thurs. Nov. 13, 2007
465     * Class::MOP::Attribute
466       - Fix error message on confess (groditi)
467
468 0.44 Thurs. Nov. 13, 2007
469     - Apparently I didn't make dist correctly (groditi)
470
471 0.43 Thurs. Nov. 13, 2007
472     * Class::MOP
473       - Add support for the 'builder' attribute (groditi)
474
475     * Class::MOP::Class
476       - optimise metaclass-already-exists check in
477         construct_class_instance (groditi)
478       - duplicate check into initialize to save a
479         call through (groditi)
480
481     * Class::MOP::Attribute
482       - Add support for the 'builder' attribute (groditi)
483       - Make predicates check for the existence of a value, not whether
484         it is defined (groditi)
485
486     * Class::MOP::Instance
487       - Make predicates check for the existence of a value, not whether
488         it is defined (groditi)
489
490     * Class::MOP::Method::Accessor
491       - made this a subclass of Class::MOP::Method::Generated
492         - removed the relevant attributes
493
494     * Class::MOP::Method::Constructor
495       - fixed the cached values we had to be more sane
496       - made this a subclass of Class::MOP::Method::Generated
497       - fixed generated constructor so it properly handles
498         subclasses now.
499         - added tests for this
500       - added the option to allow for both inlined and
501         non-inlined constructors.
502       - Update inlined methods for builder and predicate changes (groditi)
503
504     * Class::MOP::Method::Generated
505       - added this class as an abstract base for the
506         Class::MOP::Method::{Constructor,Accessor} classes
507         - added tests for this
508
509     *t/
510       - Alter tests (005, 014 020, 021) for new builder addition (groditi)
511       - Tests for new predicate behavior (and corrections to old tests) (groditi)
512
513     *examples/
514       - Update ArrayRef based class example to work with predicate changes
515
516 0.42 Mon. July 16, 2007
517     !!! Horray for mst, he fixed it !!!
518
519     * Class::MOP::Package
520       - alter symbol table handling to deal with 5.8.x and 5.9.x
521
522     * t/
523       - Get rid of the crappy workaround from 0.40/41
524
525 0.41 Sun. July 15, 2007
526     * t/
527         Arghh!!! My TODO test didn't work, so I handle
528         it manually now so that people can use this
529         with 5.9.5/bleadperl without issue.
530
531 0.40 Tues, July 3, 2007
532     * t/
533       ~ marked a test in 003_methods.t as TODO
534         for perl 5.9.5 (this test is irrelvant to
535         the module functioning on 5.9.5 for the most
536         part anyway)
537
538 0.39 Mon. June 18, 2007
539     * Class::MOP::Immutable
540       - added make_metaclass_mutable + docs (groditi)
541       - removed unused variable
542       - added create_immutable_transformer
543         necessary for sane overloading of immutable behavior
544          - tests for this (groditi)
545
546     * Class::MOP::Class
547       - Immutability can now be undone,
548         added make_mutable + tests + docs (groditi)
549       - Massive changes to the way Immutable is done
550         for details see comments next to make_immutable
551         This fixes a bug where custom metaclasses broke
552         when made immutable. We are now keeping one immutable
553         metaclass instance per metaclass instead of just one
554         to prevent isa hierarchy corruption. Memory use will go
555         up, but I suspect it will be neglible.
556          - New tests added for this behavior.  (groditi)
557
558 0.38 Thurs. May 31, 2007
559     ~~ More documentation updates ~~
560
561     * Class::MOP::Package
562       - we now deal with stub methods properly
563         - added tests for this
564       - fixed some tests failing on 5.9.5 (thanks blblack)
565
566     * Class::MOP::Attribute
567       - added get_read_method and get_write_method
568         thanks to groditi for this code, tests
569         and docs.
570         - added tests and POD for this
571
572     * Class::MOP::Class
573       - fixed RT issue #27329, clone object now
574         handles undef values correctly.
575         - added tests for this
576       - Corrected anon-class handling so that they
577         will not get reaped when instances still
578         exist which need to reference them. This is
579         the correct behavior, hopefully this is an
580         obscure enough feature that there are not too
581         many work arounds out in the wild.
582         - added tests for this by groditi
583         - updated docs to explain this
584
585     * metaclass
586       - load custom metaclasses automatically (thanks groditi)
587         - added tests for this behavior
588
589 0.37 Sat. March 10, 2007
590     ~~ Many, many documentation updates ~~
591
592     * Class::MOP
593       - added &load_class and &is_class_loaded
594         - added tests and docs for these
595
596     * Class::MOP::Attribute
597       - default now checks the instance with defined to
598         avoid setting off bool-overloads (found by Carl Franks)
599
600 0.37_002
601     * /t
602       - bad name in a test, causing meaningless failuress.
603         No other changes.
604
605 0.37_001
606
607     ~~ GLOBAL CHANGES ~~
608     - All attribute names are now consistent and follow Perl 6
609       style (prefixed with the sigil, and ! as the twigil for
610       private attrs). This should not affect any code, unless
611       you broke encapsulation, in which case, it is your problem
612       anyway.
613
614     !! Class::MOP::Class::Immutable has been removed
615
616     * Class::MOP::Method::Constructor
617       - this has been moved out of Class::MOP::Class::Immutable
618         and is a proper subclass of Class::MOP::Method now.
619
620     * Class::MOP::Class
621       - this module now uses Class::MOP::Immutable for the
622         immutable transformation instead of
623         Class::MOP::Class::Immutable.
624
625     + Class::MOP::Immutable
626       - this module now controls the transformation from a mutable
627         to an immutable version of the class. Docs for this will
628         be coming eventually.
629
630
631 0.36 Sun. Nov. 5, 2006
632     * Class::MOP::Class
633       - added a few 'no warnings' lines to keep annoying
634         (and meaningless) warnings from chirping during
635         global destruction.
636
637     * Class::MOP
638       - some more bootstrapping is now done on the new
639         classes
640
641     * Class::MOP::Class::Immutable
642       *** API CHANGE ***
643       - constructor generation is now handled by
644         the Class::MOP::Method::Constructor class
645
646     * Class::MOP::Method::Constructor
647       - created this to handle constructor generation
648         in Class::MOP::Class::Immutable
649
650     * Class::MOP::Attribute
651       *** API CHANGE ***
652       - attributes now delegate to the
653         Class::MOP::Method::Accessor to generate
654         accessors
655
656     * Class::MOP::Method::Accessor
657       - all accessor generation functions from
658         Class::MOP::Attribute have been moved here
659
660 0.35 Sat. Sept. 30, 2006
661
662     * scripts/class_browser.pl
663       - initial prototype of a class browser, more
664         on this to come. Comments and patches are
665         very much welcome.
666
667     * Class::MOP
668       - All Class::MOP::* accessors are no longer
669         re-generated in the bootstrap, instead
670         they are aliased from the originals
671         - fixed tests to reflect
672       - added Class::MOP::Method (and its subclasses)
673         to the bootstrap
674         - adjusted tests for this
675       - added the Class::MOP::Instance attributes
676         to the bootstrap
677
678     * Class::MOP::Method
679       *** API CHANGE ***
680       - methods are no longer blessed CODE refs
681         but are actual objects which can be CODE-ified
682         - adjusted tests to compensate
683         - adjusted docs for this
684
685     * Class::MOP::Class
686       - changed how methods are dealt with to
687         encapsulate most of the work into the
688         &get_method_map method
689       - made several adjustments for the change
690         in Class::MOP::Method
691       - &add_attribute now checks if you are adding
692         a duplicate name, and properly removes the
693         old one before installing the new one
694         - added tests for this
695         - adjusted docs for this
696
697     * Class::MOP::Class::Immutable
698       - added caching of &get_method_map
699       - fixed issue with &get_package_symbol
700       - cleaned up the methods that die (patch by David Wheeler)
701
702     * Class::MOP::Package
703       - added filtering capabilities to
704         &list_all_package_symbols
705
706 0.34 Sat. Aug. 26, 2006
707     * Class::MOP::Class
708       - added the %:methods attribute, which like
709         the $:version and such just actually goes
710         to the symbol table to get it's stuff.
711         However, it makes the MOP more complete.
712      ** API CHANGE **
713       - The &create method now requires that all
714         but the package name now is passed in as
715         named parameters. See docs for more info.
716         - updated docs and tests for this
717
718     * Class::MOP::Object
719       - added &dump method to easily Data::Dumper
720         an object
721
722     * Class::MOP
723       - cleaned up the initialization of attributes
724         which do not store things in the instance
725       - added the %:methods attribute definition to
726         the bootstrap
727
728     ~ lots of misc. test cleanup
729
730 0.33 Sat. Aug. 19, 2006
731     * Class::MOP::Class
732       - moved the metaclass cache out of here
733         and it is now in Class::MOP itself.
734
735     * Class::MOP
736       - moved all the metaclass cache stuff here
737         - fixed all tests for this
738
739     * Class::MOP::Attribute
740       - reference values (other than CODE refs)
741         are no longer allowed for defaults
742         - added tests for this
743
744     * Class::MOP::Package
745       - fixed an issue with perl 5.8.1 and how it deals
746         with symbol tables. The namespace hash is now
747         always reloaded from the symbol table.
748
749     ~ lots of misc. documentation cleanup
750
751 0.32 Sat. Aug. 12, 2006
752     + added Class::MOP::Object so that the
753       metamodel is more complete (and closer
754       to what Perl 6 will probably be).
755
756     * Class::MOP::Package
757       - refactored entire class, this is now
758         the primary gateway between the metaclass
759         and the Perl 5 symbol table
760         - added many tests for this
761       - this class is now a subclass of
762         Class::MOP::Object
763         - added some tests to reflect this
764
765     * Class::MOP::Class
766       - refactored all symbol table access to
767         use Class::MOP::Package methods instead
768
769     * Class::MOP::Module
770       - adding the $:version attribute in the bootstrap
771         so that Module has a version as an attribute
772         - see comment in Class::MOP for details
773       - added the $:authority attribute to this module
774         as well as an &identifier method, to bring us
775         ever closer to Perl 6 goodness
776         - I have added $AUTHORITY to all the modules
777         - added tests for this
778
779     * Class::MOP::Instance
780       - added &deinitialize_slot for removing slots
781         from an instance
782         - added tests for this
783
784     * Class::MOP::Attribute
785       - added support for &deinitialize_slot for removing
786         slots from an instance
787         - added tests for this
788
789 0.31 Sat. July 15, 2006
790
791     * Class::MOP::Class
792       - added &find_method_by_name to locate a method
793         anywhere within the class hierarchy
794
795     * Class::MOP::Attribute
796       - added &set_value and &get_value for getting
797         the value of the attribute for a particular
798         instance.
799
800 0.30 Wed. July 5, 2006
801     ---------------------------------------
802     This is the first version of Class::MOP
803     to introduce the immutable features which
804     will be used for optimizating the MOP.
805     This support should still be considered
806     experimental, but moving towards stability.
807     ---------------------------------------
808
809     * Created Class::MOP::Class::Immutable
810
811     * Created the Class::MOP::Package and
812       Class::MOP::Module classes to more
813       closely conform to Perl 6's meta-model
814
815     * Class::MOP::Class
816       - now inherits from Class::MOP::Module
817       - several methods moved to ::Module and
818         ::Package and now inherited
819         - added tests for this
820
821     * Class::MOP::Instance
822       - added an is_inlinable method to allow other
823         classes to check before they attempt to optimize.
824       - added an inline_create_instance to inline
825         instance creation (of course)
826
827     ** API CHANGE **
828       - the Class::MOP::Class::*_package_variable
829         methods are all now methods of Class::MOP::Package
830         and called *_package_symbol instead. This is
831         because they are now more general purpose symbol
832         table manipulation methods.
833
834 0.29_02 Thurs. June 22, 2006
835     ++ DEVELOPER RELEASE ++
836     * Class::MOP::Class
837       - small change in &create so that it behaves
838         properly when inherited
839       - small fix to &clone_instance
840
841 0.29_01 Fri. May 12, 2006
842     ++ DEVELOPER RELEASE ++
843       - This release works in combination with
844         Moose 0.09_01, it is a developer release
845         because it introduces a new instance
846         sub-protocol and has not yet been
847         optimized.
848
849     * Class::MOP::Class
850       - anon-classes are now properly garbage collected
851         - added tests for this
852       - improved method modifier wrapping
853
854     * Class::MOP::Instance
855       - added new instance protocol
856         - added tests for this
857       - changed all relevant modules and examples
858         - Class::MOP::Class
859         - Class::MOP::Attribute
860         - examples/*
861
862     * metaclass
863       - you no longer need to specify the metaclass
864         itself, if it is not there, Class::MOP::Class
865         is just assumed
866         - updated tests for this
867
868     * examples/
869       - added ArrayBasedStorage example to show
870         instance storage using ARRAY refs instead of
871         HASH refs.
872         - added tests for this
873       - InsideOutClass is totally revised using the
874         new instance protocol
875         - added more tests for this
876
877 0.26 Mon. April 24, 2006
878     * Class::MOP::Class
879       - added find_attribute_by_name method
880         - added tests and docs for this
881       - some small optimizations
882
883     * Class::MOP::Attribute
884       - some small optimizations
885
886 0.25 Thurs. April 20, 2006
887     * Class::MOP::Class
888       - added create_anon_class for creating anonymous classes
889         - added tests for this
890       - added get_all_metaclasses, get_all_metaclass_names
891         and get_all_metaclass_instances method to allow
892         access to all the cached metaclass objects.
893       - attribute slot initialization is now the responsibility
894         of the attribute itself, and construct_instance now
895         delegates appropriately
896
897     * Class::MOP::Attribute
898       - attribute slot initialization is now the responsibility
899         of the attribute itself, so we added a method for it
900         called initialize_instance_slot
901
902     * examples/
903       - adjusted all the examples to use the new attribute
904         initialize_instance_slot method
905
906 0.24 Tues. April 11, 2006
907     * Class::MOP::Class
908       - cleaned up how the before/after/around method
909         modifiers get named with Sub::Name
910
911 0.23 Thurs. March 30, 2006
912         * Class::MOP::Class
913           - fixed the way attribute defaults are handled
914             during instance construction (bug found by chansen)
915
916         * Class::MOP::Attribute
917           - read-only accessors ('reader') will now die if
918             passed more than one argument (attempting to write
919             to them basically)
920               - added tests for this
921               - adjusted all /example files to comply
922
923 0.22 Mon. March 20, 2006
924     * Class::MOP::Class
925       - localized $@ in the *_package_variable functions
926         because otherwise, it does ugly things in Moose.
927           - added test case for this
928
929 0.21 Wed. March 15, 2006
930     * Class::MOP::Class
931       - fixed issue where metaclasses are reaped from
932         our cache in global destruction, and so are not
933         available in DESTORY calls
934
935 0.20 Thurs. March 2, 2006
936     - removed the dependency for Clone since
937       we no longer to deep-cloning by default.
938
939     * Class::MOP::Method
940       - added &package_name, &name and
941         &fully_qualified_name methods, some of
942         which were formerly private subs in
943         Class::MOP::Class
944
945     * Class::MOP::Method::Wrapped
946       - allows for a method to be wrapped with
947         before, after and around modifiers
948           - added tests and docs for this feature
949
950     * Class::MOP::Class
951       - improved &get_package_symbol
952           - &version and &superclasses now use it
953       - methods are now blessed into Class::MOP::Method
954         whenever possible
955       - added methods to install CLOS-style method modifiers
956          - &add_before_method_modifier
957          - &add_after_method_modifier
958          - &add_around_method_modifier
959              - added tests and docs for these
960       - added &find_next_method_by_name which finds the
961         equivalent of SUPER::method_name
962
963 0.12 Thurs. Feb 23, 2006
964     - reduced the dependency on B, no need to always
965       have the latest
966
967     * examples/
968       - added docs to the C3 method dispatch order test
969       - fixed missing Algorithm::C3 dependency by making
970         the test skip if it is not installed
971
972 0.11 Mon Feb. 20, 2006
973     * examples/
974       - added example of changing method dispatch order to C3
975
976     * Class::MOP::Class
977       - changed how clone_instance behaves, it now only does a
978         shallow clone (see docs for more details)
979         - added docs and tests
980
981 0.10 Tues Feb. 14, 2006
982     ** This release was mostly about writing more tests and
983        cleaning out old and dusty code, the MOP should now
984        be considered "ready to use".
985
986     - adding more tests to get coverage up a little higher,
987       mostly testing errors and edge cases.
988       - test coverage is now at 99%
989
990     * Class::MOP
991       - no longer optionally exports to UNIVERSAL::meta or
992         creates a custom metaclass generator, use the
993         metaclass pragma instead.
994
995     * Class::MOP::Class
996       - fixed a number of minor issues which came up in the
997         error/edge-case tests
998
999     * Class::MOP::Attribute
1000       - fixed a number of minor issues which came up in the
1001         error/edge-case tests
1002
1003     * examples/
1004       - fixing the AttributesWithHistory example, it was broken.
1005
1006 0.06 Thurs Feb. 9, 2006
1007     * metaclass
1008       - adding new metaclass pragma to make setting up the
1009         metaclass a little more straightforward
1010
1011     * Class::MOP
1012       - clean up bootstrapping to include more complete
1013         attribute definitions for Class::MOP::Class and
1014         Class::MOP::Attribute (accessors, readers, writers,
1015         etc.) ... it is redundant, but is useful meta-info
1016         to have around.
1017
1018     * Class::MOP::Class
1019       - fixing minor meta-circularity issue with &meta, it
1020         is now more useful for subclasses
1021       - added &get_attribute_map as an accessor for the
1022         hash of attribute meta objects
1023       - &compute_all_applicable_attributes now just returns
1024         the attribute meta-object, rather than the HASH ref
1025         since all the same info can be gotten from the
1026         attribute meta-object itself
1027           - updated docs & tests to reflect
1028       - added &clone_instance method which does a deep clone
1029         of the instance structure created by &construct_instance
1030           - added docs & tests for this
1031           - added Clone as a dependency
1032       - added &new_object and &clone_object convience methods to
1033         return blessed new or cloned instances
1034           - they handle Class::MOP::Class singletons correctly too
1035           - added docs & tests for this
1036       - cleaned up the &constuct_class_instance so that it behaves
1037         more like &construct_instance (and managed the singletons too)
1038       - added the &check_metaclass_compatibility method to make sure
1039         that metaclasses are upward and downward compatible.
1040           - added tests and docs for this
1041
1042     * examples/
1043       - adjusting code to use the &Class::MOP::Class::meta
1044         fix detailed above
1045       - adjusting code to use the metaclass pragma
1046
1047 0.05 Sat Feb. 4, 2006
1048     * Class::MOP::Class
1049       - added the &attribute_metaclass and &method_metaclass
1050         attributes which contain a metaclass name to use for
1051         attributes/methods respectively
1052
1053     * Class::MOP
1054       - bootstrap additional attributes for Class::MOP::Class
1055
1056     * examples/
1057       - adjusted the example code and tests to use the new
1058         &attribute_metaclass feature of Class::MOP::Class
1059       - added new example:
1060         - LazyClass
1061
1062 0.04 Fri Feb. 3, 2006
1063     * Class::MOP::Class
1064       - some documentation suggestions from #perl6
1065
1066     * Class::MOP::Attribute
1067       - improved error messages
1068
1069     * examples/
1070       - added new examples:
1071         - AttributesWithHistory
1072         - ClassEncapsultedAttributes
1073
1074 0.03 Fri Feb. 3, 2006
1075     - converted to Module::Build instead of EU::MM
1076
1077     * Class::MOP::Attribute
1078       - refactored method generation code
1079       - attributes are now associated with class directly
1080
1081     * examples/
1082       - refactored the InsideOut example to take advantage
1083         of the Class::MOP::Attribute refactoring
1084       - changed example files to .pod files and hide thier
1085         package names from PAUSE (I don't want to own these
1086         namespaces really, they are just examples)
1087
1088 0.02 Thurs Feb. 2, 2006
1089     - moving examples from t/lib/* to examples/*
1090         - adding POD documentation to the examples
1091
1092 0.01 Thurs Feb. 2, 2006
1093     - Initial release