1 Revision history for Perl extension Class-MOP.
5 - fixed the filename length on several
6 test files so we install on VMS better
8 - fixed incorrect use of catdir when it
9 should be catfile (RT #32385)
11 0.53 Thurs. Feb. 14, 1008
12 ~~ several doc. fixes and updates ~~
15 Class::MOP::Method::Constructor
17 - making init_arg accept an undefined value
18 to indicate that no constructor args can
19 be passed (thanks to nothingmuch)
20 - added tests for this
21 - added attribute initializer attribute (rjbs)
24 - making this use the new init_arg => undef
25 feature instead of the silly hack from
26 before (thanks to nothingmuch)
28 0.52 Tues. Jan. 22, 2008
30 - fixed bug in rebless_instance
33 * Class::MOP::Method::Constructor
34 - removed assumptions about the existence of
37 0.51 Mon. Jan. 14, 2008
38 ~~~ some misc. doc. fixes ~~~
39 ~~ updated copyright dates ~~
42 - now sets the IS_RUNNING_ON_5_10
43 constant so that we can take advantage
44 of some of the nice bits of 5.10
47 - uses the IS_RUNNING_ON_5_10 flag to
48 optimize the &linearized_isa method
49 and avoid the hack/check for circular
50 inheritence in &class_precedence_list
51 - added rebless_instance method (Sartak)
52 - added tests for this
54 * Class::MOP::Immutable
55 - the immutable class now keeps track of
56 the transformer which immutablized it
58 * Class::MOP::Instance
59 - added rebless_instance_structure method (Sartak)
60 - added tests for this
62 0.50 Fri. Dec. 21, 2007
64 - fixed bug in immutable to make sure that
65 transformation arguments are saved
67 - added tests for this
69 * Class::MOP::Immutable
70 - fixed a bug (see above)
72 * Class::MOP::Attribute
75 0.49 Fri. Dec. 14, 2007
76 !! Class::MOP now loads 2 x faster !!
77 !! with XS speedups (thanks konobi) !!
80 - removed the dependency on B
81 - added two XS functions (thanks konobi)
82 - get_code_info($code) which replaces all
83 the B fiddling we were doing with
84 faster/leaner XS level fiddling
85 - check_package_cache_flag($pkg_name) which
86 returns the PL_sub_generation variable to
87 be used to help manage method caching.
90 In 5.10 or greater this will actually
91 use the mro::get_pkg_gen instead to give
92 even more accurate caching information.
93 blblack++ for that stuff :)
96 - added the &subclasses method (thanks rlb)
97 - added the update_package_cache_flag and
98 reset_package_cache_flag which help keep
99 track of when we need to re-fetch the
101 - Several small improvements to take advantage
102 of the new method map caching features
104 0.48 Mon. Nov. 26, 2007
105 * Class::MOP::Attribute
106 - fixed get_read/write_method to handle the
107 HASH ref case, which makes the
108 get_read/write_method_ref handle it too.
109 - added more tests for this
111 0.47 Sat. Nov. 24, 2007
112 * Class::MOP::Attribute
113 - fixed misspelling in get_write_method_ref
114 - added more tests for this
116 0.46 Fri. Nov. 23, 2007
118 - added the linearized_isa method instead of constantly
119 pruning duplicate classes (this will be even more
120 useful in the 5.10-compat version coming soon)
122 * Class::MOP::Attribute
123 - added the get_read_method_ref and get_write_method_ref
124 methods which allow you to retrieve a CODE ref which
125 can always be used to read or write an attribute.
127 0.45 Thurs. Nov. 13, 2007
128 * Class::MOP::Attribute
129 - Fix error message on confess (groditi)
131 0.44 Thurs. Nov. 13, 2007
132 - Apparently I didn't make dist correctly (groditi)
134 0.43 Thurs. Nov. 13, 2007
136 - Add support for the 'builder' attribute (groditi)
139 - optimise metaclass-already-exists check in
140 construct_class_instance (groditi)
141 - duplicate check into initialize to save a
142 call through (groditi)
144 * Class::MOP::Attribute
145 - Add support for the 'builder' attribute (groditi)
146 - Make predicates check for the existence of a value, not whether
147 it is defined (groditi)
149 * Class::MOP::Instance
150 - Make predicates check for the existence of a value, not whether
151 it is defined (groditi)
153 * Class::MOP::Method::Accessor
154 - made this a subclass of Class::MOP::Method::Generated
155 - removed the relevant attributes
157 * Class::MOP::Method::Constructor
158 - fixed the cached values we had to be more sane
159 - made this a subclass of Class::MOP::Method::Generated
160 - fixed generated constructor so it properly handles
162 - added tests for this
163 - added the option to allow for both inlined and
164 non-inlined constructors.
165 - Update inlined methods for builder and predicate changes (groditi)
167 * Class::MOP::Method::Generated
168 - added this class as an abstract base for the
169 Class::MOP::Method::{Constructor,Accessor} classes
170 - added tests for this
173 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
174 - Tests for new predicate behavior (and corrections to old tests) (groditi)
177 - Update ArrayRef based class example to work with predicate changes
179 0.42 Mon. July 16, 2007
180 !!! Horray for mst, he fixed it !!!
182 * Class::MOP::Package
183 - alter symbol table handling to deal with 5.8.x and 5.9.x
186 - Get rid of the crappy workaround from 0.40/41
188 0.41 Sun. July 15, 2007
190 Arghh!!! My TODO test didn't work, so I handle
191 it manually now so that people can use this
192 with 5.9.5/bleadperl without issue.
194 0.40 Tues, July 3, 2007
196 ~ marked a test in 003_methods.t as TODO
197 for perl 5.9.5 (this test is irrelvant to
198 the module functioning on 5.9.5 for the most
201 0.39 Mon. June 18, 2007
202 * Class::MOP::Immutable
203 - added make_metaclass_mutable + docs (groditi)
204 - removed unused variable
205 - added create_immutable_transformer
206 necessary for sane overloading of immutable behavior
207 - tests for this (groditi)
210 - Immutability can now be undone,
211 added make_mutable + tests + docs (groditi)
212 - Massive changes to the way Immutable is done
213 for details see comments next to make_immutable
214 This fixes a bug where custom metaclasses broke
215 when made immutable. We are now keeping one immutable
216 metaclass instance per metaclass instead of just one
217 to prevent isa hierarchy corruption. Memory use will go
218 up, but I suspect it will be neglible.
219 - New tests added for this behavior. (groditi)
221 0.38 Thurs. May 31, 2007
222 ~~ More documentation updates ~~
224 * Class::MOP::Package
225 - we now deal with stub methods properly
226 - added tests for this
227 - fixed some tests failing on 5.9.5 (thanks blblack)
229 * Class::MOP::Attribute
230 - added get_read_method and get_write_method
231 thanks to groditi for this code, tests
233 - added tests and POD for this
236 - fixed RT issue #27329, clone object now
237 handles undef values correctly.
238 - added tests for this
239 - Corrected anon-class handling so that they
240 will not get reaped when instances still
241 exist which need to reference them. This is
242 the correct behavior, hopefully this is an
243 obscure enough feature that there are not too
244 many work arounds out in the wild.
245 - added tests for this by groditi
246 - updated docs to explain this
249 - load custom metaclasses automatically (thanks groditi)
250 - added tests for this behavior
252 0.37 Sat. March 10, 2007
253 ~~ Many, many documentation updates ~~
256 - added &load_class and &is_class_loaded
257 - added tests and docs for these
259 * Class::MOP::Attribute
260 - default now checks the instance with defined to
261 avoid setting off bool-overloads (found by Carl Franks)
265 - bad name in a test, causing meaningless failuress.
271 - All attribute names are now consistent and follow Perl 6
272 style (prefixed with the sigil, and ! as the twigil for
273 private attrs). This should not affect any code, unless
274 you broke encapsulation, in which case, it is your problem
277 !! Class::MOP::Class::Immutable has been removed
279 * Class::MOP::Method::Constructor
280 - this has been moved out of Class::MOP::Class::Immutable
281 and is a proper subclass of Class::MOP::Method now.
284 - this module now uses Class::MOP::Immutable for the
285 immutable transformation instead of
286 Class::MOP::Class::Immutable.
288 + Class::MOP::Immutable
289 - this module now controls the transformation from a mutable
290 to an immutable version of the class. Docs for this will
291 be coming eventually.
294 0.36 Sun. Nov. 5, 2006
296 - added a few 'no warnings' lines to keep annoying
297 (and meaningless) warnings from chirping during
301 - some more bootstrapping is now done on the new
304 * Class::MOP::Class::Immutable
306 - constructor generation is now handled by
307 the Class::MOP::Method::Constructor class
309 * Class::MOP::Method::Constructor
310 - created this to handle constructor generation
311 in Class::MOP::Class::Immutable
313 * Class::MOP::Attribute
315 - attributes now delegate to the
316 Class::MOP::Method::Accessor to generate
319 * Class::MOP::Method::Accessor
320 - all accessor generation functions from
321 Class::MOP::Attribute have been moved here
323 0.35 Sat. Sept. 30, 2006
325 * scripts/class_browser.pl
326 - initial prototype of a class browser, more
327 on this to come. Comments and patches are
331 - All Class::MOP::* accessors are no longer
332 re-generated in the bootstrap, instead
333 they are aliased from the originals
334 - fixed tests to reflect
335 - added Class::MOP::Method (and its subclasses)
337 - adjusted tests for this
338 - added the Class::MOP::Instance attributes
343 - methods are no longer blessed CODE refs
344 but are actual objects which can be CODE-ified
345 - adjusted tests to compensate
346 - adjusted docs for this
349 - changed how methods are dealt with to
350 encapsulate most of the work into the
351 &get_method_map method
352 - made several adjustments for the change
353 in Class::MOP::Method
354 - &add_attribute now checks if you are adding
355 a duplicate name, and properly removes the
356 old one before installing the new one
357 - added tests for this
358 - adjusted docs for this
360 * Class::MOP::Class::Immutable
361 - added caching of &get_method_map
362 - fixed issue with &get_package_symbol
363 - cleaned up the methods that die (patch by David Wheeler)
365 * Class::MOP::Package
366 - added filtering capabilities to
367 &list_all_package_symbols
369 0.34 Sat. Aug. 26, 2006
371 - added the %:methods attribute, which like
372 the $:version and such just actually goes
373 to the symbol table to get it's stuff.
374 However, it makes the MOP more complete.
376 - The &create method now requires that all
377 but the package name now is passed in as
378 named parameters. See docs for more info.
379 - updated docs and tests for this
382 - added &dump method to easily Data::Dumper
386 - cleaned up the initialization of attributes
387 which do not store things in the instance
388 - added the %:methods attribute definition to
391 ~ lots of misc. test cleanup
393 0.33 Sat. Aug. 19, 2006
395 - moved the metaclass cache out of here
396 and it is now in Class::MOP itself.
399 - moved all the metaclass cache stuff here
400 - fixed all tests for this
402 * Class::MOP::Attribute
403 - reference values (other than CODE refs)
404 are no longer allowed for defaults
405 - added tests for this
407 * Class::MOP::Package
408 - fixed an issue with perl 5.8.1 and how it deals
409 with symbol tables. The namespace hash is now
410 always reloaded from the symbol table.
412 ~ lots of misc. documentation cleanup
414 0.32 Sat. Aug. 12, 2006
415 + added Class::MOP::Object so that the
416 metamodel is more complete (and closer
417 to what Perl 6 will probably be).
419 * Class::MOP::Package
420 - refactored entire class, this is now
421 the primary gateway between the metaclass
422 and the Perl 5 symbol table
423 - added many tests for this
424 - this class is now a subclass of
426 - added some tests to reflect this
429 - refactored all symbol table access to
430 use Class::MOP::Package methods instead
433 - adding the $:version attribute in the bootstrap
434 so that Module has a version as an attribute
435 - see comment in Class::MOP for details
436 - added the $:authority attribute to this module
437 as well as an &identifier method, to bring us
438 ever closer to Perl 6 goodness
439 - I have added $AUTHORITY to all the modules
440 - added tests for this
442 * Class::MOP::Instance
443 - added &deinitialize_slot for removing slots
445 - added tests for this
447 * Class::MOP::Attribute
448 - added support for &deinitialize_slot for removing
449 slots from an instance
450 - added tests for this
452 0.31 Sat. July 15, 2006
455 - added &find_method_by_name to locate a method
456 anywhere within the class hierarchy
458 * Class::MOP::Attribute
459 - added &set_value and &get_value for getting
460 the value of the attribute for a particular
463 0.30 Wed. July 5, 2006
464 ---------------------------------------
465 This is the first version of Class::MOP
466 to introduce the immutable features which
467 will be used for optimizating the MOP.
468 This support should still be considered
469 experimental, but moving towards stability.
470 ---------------------------------------
472 * Created Class::MOP::Class::Immutable
474 * Created the Class::MOP::Package and
475 Class::MOP::Module classes to more
476 closely conform to Perl 6's meta-model
479 - now inherits from Class::MOP::Module
480 - several methods moved to ::Module and
481 ::Package and now inherited
482 - added tests for this
484 * Class::MOP::Instance
485 - added an is_inlinable method to allow other
486 classes to check before they attempt to optimize.
487 - added an inline_create_instance to inline
488 instance creation (of course)
491 - the Class::MOP::Class::*_package_variable
492 methods are all now methods of Class::MOP::Package
493 and called *_package_symbol instead. This is
494 because they are now more general purpose symbol
495 table manipulation methods.
497 0.29_02 Thurs. June 22, 2006
498 ++ DEVELOPER RELEASE ++
500 - small change in &create so that it behaves
501 properly when inherited
502 - small fix to &clone_instance
504 0.29_01 Fri. May 12, 2006
505 ++ DEVELOPER RELEASE ++
506 - This release works in combination with
507 Moose 0.09_01, it is a developer release
508 because it introduces a new instance
509 sub-protocol and has not yet been
513 - anon-classes are now properly garbage collected
514 - added tests for this
515 - improved method modifier wrapping
517 * Class::MOP::Instance
518 - added new instance protocol
519 - added tests for this
520 - changed all relevant modules and examples
522 - Class::MOP::Attribute
526 - you no longer need to specify the metaclass
527 itself, if it is not there, Class::MOP::Class
529 - updated tests for this
532 - added ArrayBasedStorage example to show
533 instance storage using ARRAY refs instead of
535 - added tests for this
536 - InsideOutClass is totally revised using the
537 new instance protocol
538 - added more tests for this
540 0.26 Mon. April 24, 2006
542 - added find_attribute_by_name method
543 - added tests and docs for this
544 - some small optimizations
546 * Class::MOP::Attribute
547 - some small optimizations
549 0.25 Thurs. April 20, 2006
551 - added create_anon_class for creating anonymous classes
552 - added tests for this
553 - added get_all_metaclasses, get_all_metaclass_names
554 and get_all_metaclass_instances method to allow
555 access to all the cached metaclass objects.
556 - attribute slot initialization is now the responsibility
557 of the attribute itself, and construct_instance now
558 delegates appropriately
560 * Class::MOP::Attribute
561 - attribute slot initialization is now the responsibility
562 of the attribute itself, so we added a method for it
563 called initialize_instance_slot
566 - adjusted all the examples to use the new attribute
567 initialize_instance_slot method
569 0.24 Tues. April 11, 2006
571 - cleaned up how the before/after/around method
572 modifiers get named with Sub::Name
574 0.23 Thurs. March 30, 2006
576 - fixed the way attribute defaults are handled
577 during instance construction (bug found by chansen)
579 * Class::MOP::Attribute
580 - read-only accessors ('reader') will now die if
581 passed more than one argument (attempting to write
583 - added tests for this
584 - adjusted all /example files to comply
586 0.22 Mon. March 20, 2006
588 - localized $@ in the *_package_variable functions
589 because otherwise, it does ugly things in Moose.
590 - added test case for this
592 0.21 Wed. March 15, 2006
594 - fixed issue where metaclasses are reaped from
595 our cache in global destruction, and so are not
596 available in DESTORY calls
598 0.20 Thurs. March 2, 2006
599 - removed the dependency for Clone since
600 we no longer to deep-cloning by default.
603 - added &package_name, &name and
604 &fully_qualified_name methods, some of
605 which were formerly private subs in
608 * Class::MOP::Method::Wrapped
609 - allows for a method to be wrapped with
610 before, after and around modifiers
611 - added tests and docs for this feature
614 - improved &get_package_symbol
615 - &version and &superclasses now use it
616 - methods are now blessed into Class::MOP::Method
618 - added methods to install CLOS-style method modifiers
619 - &add_before_method_modifier
620 - &add_after_method_modifier
621 - &add_around_method_modifier
622 - added tests and docs for these
623 - added &find_next_method_by_name which finds the
624 equivalent of SUPER::method_name
626 0.12 Thurs. Feb 23, 2006
627 - reduced the dependency on B, no need to always
631 - added docs to the C3 method dispatch order test
632 - fixed missing Algorithm::C3 dependency by making
633 the test skip if it is not installed
635 0.11 Mon Feb. 20, 2006
637 - added example of changing method dispatch order to C3
640 - changed how clone_instance behaves, it now only does a
641 shallow clone (see docs for more details)
642 - added docs and tests
644 0.10 Tues Feb. 14, 2006
645 ** This release was mostly about writing more tests and
646 cleaning out old and dusty code, the MOP should now
647 be considered "ready to use".
649 - adding more tests to get coverage up a little higher,
650 mostly testing errors and edge cases.
651 - test coverage is now at 99%
654 - no longer optionally exports to UNIVERSAL::meta or
655 creates a custom metaclass generator, use the
656 metaclass pragma instead.
659 - fixed a number of minor issues which came up in the
660 error/edge-case tests
662 * Class::MOP::Attribute
663 - fixed a number of minor issues which came up in the
664 error/edge-case tests
667 - fixing the AttributesWithHistory example, it was broken.
669 0.06 Thurs Feb. 9, 2006
671 - adding new metaclass pragma to make setting up the
672 metaclass a little more straightforward
675 - clean up bootstrapping to include more complete
676 attribute definitions for Class::MOP::Class and
677 Class::MOP::Attribute (accessors, readers, writers,
678 etc.) ... it is redundant, but is useful meta-info
682 - fixing minor meta-circularity issue with &meta, it
683 is now more useful for subclasses
684 - added &get_attribute_map as an accessor for the
685 hash of attribute meta objects
686 - &compute_all_applicable_attributes now just returns
687 the attribute meta-object, rather than the HASH ref
688 since all the same info can be gotten from the
689 attribute meta-object itself
690 - updated docs & tests to reflect
691 - added &clone_instance method which does a deep clone
692 of the instance structure created by &construct_instance
693 - added docs & tests for this
694 - added Clone as a dependency
695 - added &new_object and &clone_object convience methods to
696 return blessed new or cloned instances
697 - they handle Class::MOP::Class singletons correctly too
698 - added docs & tests for this
699 - cleaned up the &constuct_class_instance so that it behaves
700 more like &construct_instance (and managed the singletons too)
701 - added the &check_metaclass_compatibility method to make sure
702 that metaclasses are upward and downward compatible.
703 - added tests and docs for this
706 - adjusting code to use the &Class::MOP::Class::meta
708 - adjusting code to use the metaclass pragma
710 0.05 Sat Feb. 4, 2006
712 - added the &attribute_metaclass and &method_metaclass
713 attributes which contain a metaclass name to use for
714 attributes/methods respectively
717 - bootstrap additional attributes for Class::MOP::Class
720 - adjusted the example code and tests to use the new
721 &attribute_metaclass feature of Class::MOP::Class
725 0.04 Fri Feb. 3, 2006
727 - some documentation suggestions from #perl6
729 * Class::MOP::Attribute
730 - improved error messages
733 - added new examples:
734 - AttributesWithHistory
735 - ClassEncapsultedAttributes
737 0.03 Fri Feb. 3, 2006
738 - converted to Module::Build instead of EU::MM
740 * Class::MOP::Attribute
741 - refactored method generation code
742 - attributes are now associated with class directly
745 - refactored the InsideOut example to take advantage
746 of the Class::MOP::Attribute refactoring
747 - changed example files to .pod files and hide thier
748 package names from PAUSE (I don't want to own these
749 namespaces really, they are just examples)
751 0.02 Thurs Feb. 2, 2006
752 - moving examples from t/lib/* to examples/*
753 - adding POD documentation to the examples
755 0.01 Thurs Feb. 2, 2006