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