1 Revision history for Perl extension Class-MOP.
3 0.50 Fri. Dec. 21, 2007
5 - fixed bug in immutable to make sure that
6 transformation arguments are saved
10 * Class::MOP::Immutable
11 - fixed a bug (see above)
13 * Class::MOP::Attribute
16 0.49 Fri. Dec. 14, 2007
17 !! Class::MOP now loads 2 x faster !!
18 !! with XS speedups (thanks konobi) !!
21 - removed the dependency on B
22 - added two XS functions (thanks konobi)
23 - get_code_info($code) which replaces all
24 the B fiddling we were doing with
25 faster/leaner XS level fiddling
26 - check_package_cache_flag($pkg_name) which
27 returns the PL_sub_generation variable to
28 be used to help manage method caching.
31 In 5.10 or greater this will actually
32 use the mro::get_pkg_gen instead to give
33 even more accurate caching information.
34 blblack++ for that stuff :)
37 - added the &subclasses method (thanks rlb)
38 - added the update_package_cache_flag and
39 reset_package_cache_flag which help keep
40 track of when we need to re-fetch the
42 - Several small improvements to take advantage
43 of the new method map caching features
45 0.48 Mon. Nov. 26, 2007
46 * Class::MOP::Attribute
47 - fixed get_read/write_method to handle the
48 HASH ref case, which makes the
49 get_read/write_method_ref handle it too.
50 - added more tests for this
52 0.47 Sat. Nov. 24, 2007
53 * Class::MOP::Attribute
54 - fixed misspelling in get_write_method_ref
55 - added more tests for this
57 0.46 Fri. Nov. 23, 2007
59 - added the linearized_isa method instead of constantly
60 pruning duplicate classes (this will be even more
61 useful in the 5.10-compat version coming soon)
63 * Class::MOP::Attribute
64 - added the get_read_method_ref and get_write_method_ref
65 methods which allow you to retrieve a CODE ref which
66 can always be used to read or write an attribute.
68 0.45 Thurs. Nov. 13, 2007
69 * Class::MOP::Attribute
70 - Fix error message on confess (groditi)
72 0.44 Thurs. Nov. 13, 2007
73 - Apparently I didn't make dist correctly (groditi)
75 0.43 Thurs. Nov. 13, 2007
77 - Add support for the 'builder' attribute (groditi)
80 - optimise metaclass-already-exists check in
81 construct_class_instance (groditi)
82 - duplicate check into initialize to save a
83 call through (groditi)
85 * Class::MOP::Attribute
86 - Add support for the 'builder' attribute (groditi)
87 - Make predicates check for the existence of a value, not whether
88 it is defined (groditi)
90 * Class::MOP::Instance
91 - Make predicates check for the existence of a value, not whether
92 it is defined (groditi)
94 * Class::MOP::Method::Accessor
95 - made this a subclass of Class::MOP::Method::Generated
96 - removed the relevant attributes
98 * Class::MOP::Method::Constructor
99 - fixed the cached values we had to be more sane
100 - made this a subclass of Class::MOP::Method::Generated
101 - fixed generated constructor so it properly handles
103 - added tests for this
104 - added the option to allow for both inlined and
105 non-inlined constructors.
106 - Update inlined methods for builder and predicate changes (groditi)
108 * Class::MOP::Method::Generated
109 - added this class as an abstract base for the
110 Class::MOP::Method::{Constructor,Accessor} classes
111 - added tests for this
114 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
115 - Tests for new predicate behavior (and corrections to old tests) (groditi)
118 - Update ArrayRef based class example to work with predicate changes
120 0.42 Mon. July 16, 2007
121 !!! Horray for mst, he fixed it !!!
123 * Class::MOP::Package
124 - alter symbol table handling to deal with 5.8.x and 5.9.x
127 - Get rid of the crappy workaround from 0.40/41
129 0.41 Sun. July 15, 2007
131 Arghh!!! My TODO test didn't work, so I handle
132 it manually now so that people can use this
133 with 5.9.5/bleadperl without issue.
135 0.40 Tues, July 3, 2007
137 ~ marked a test in 003_methods.t as TODO
138 for perl 5.9.5 (this test is irrelvant to
139 the module functioning on 5.9.5 for the most
142 0.39 Mon. June 18, 2007
143 * Class::MOP::Immutable
144 - added make_metaclass_mutable + docs (groditi)
145 - removed unused variable
146 - added create_immutable_transformer
147 necessary for sane overloading of immutable behavior
148 - tests for this (groditi)
151 - Immutability can now be undone,
152 added make_mutable + tests + docs (groditi)
153 - Massive changes to the way Immutable is done
154 for details see comments next to make_immutable
155 This fixes a bug where custom metaclasses broke
156 when made immutable. We are now keeping one immutable
157 metaclass instance per metaclass instead of just one
158 to prevent isa hierarchy corruption. Memory use will go
159 up, but I suspect it will be neglible.
160 - New tests added for this behavior. (groditi)
162 0.38 Thurs. May 31, 2007
163 ~~ More documentation updates ~~
165 * Class::MOP::Package
166 - we now deal with stub methods properly
167 - added tests for this
168 - fixed some tests failing on 5.9.5 (thanks blblack)
170 * Class::MOP::Attribute
171 - added get_read_method and get_write_method
172 thanks to groditi for this code, tests
174 - added tests and POD for this
177 - fixed RT issue #27329, clone object now
178 handles undef values correctly.
179 - added tests for this
180 - Corrected anon-class handling so that they
181 will not get reaped when instances still
182 exist which need to reference them. This is
183 the correct behavior, hopefully this is an
184 obscure enough feature that there are not too
185 many work arounds out in the wild.
186 - added tests for this by groditi
187 - updated docs to explain this
190 - load custom metaclasses automatically (thanks groditi)
191 - added tests for this behavior
193 0.37 Sat. March 10, 2007
194 ~~ Many, many documentation updates ~~
197 - added &load_class and &is_class_loaded
198 - added tests and docs for these
200 * Class::MOP::Attribute
201 - default now checks the instance with defined to
202 avoid setting off bool-overloads (found by Carl Franks)
206 - bad name in a test, causing meaningless failuress.
212 - All attribute names are now consistent and follow Perl 6
213 style (prefixed with the sigil, and ! as the twigil for
214 private attrs). This should not affect any code, unless
215 you broke encapsulation, in which case, it is your problem
218 !! Class::MOP::Class::Immutable has been removed
220 * Class::MOP::Method::Constructor
221 - this has been moved out of Class::MOP::Class::Immutable
222 and is a proper subclass of Class::MOP::Method now.
225 - this module now uses Class::MOP::Immutable for the
226 immutable transformation instead of
227 Class::MOP::Class::Immutable.
229 + Class::MOP::Immutable
230 - this module now controls the transformation from a mutable
231 to an immutable version of the class. Docs for this will
232 be coming eventually.
235 0.36 Sun. Nov. 5, 2006
237 - added a few 'no warnings' lines to keep annoying
238 (and meaningless) warnings from chirping during
242 - some more bootstrapping is now done on the new
245 * Class::MOP::Class::Immutable
247 - constructor generation is now handled by
248 the Class::MOP::Method::Constructor class
250 * Class::MOP::Method::Constructor
251 - created this to handle constructor generation
252 in Class::MOP::Class::Immutable
254 * Class::MOP::Attribute
256 - attributes now delegate to the
257 Class::MOP::Method::Accessor to generate
260 * Class::MOP::Method::Accessor
261 - all accessor generation functions from
262 Class::MOP::Attribute have been moved here
264 0.35 Sat. Sept. 30, 2006
266 * scripts/class_browser.pl
267 - initial prototype of a class browser, more
268 on this to come. Comments and patches are
272 - All Class::MOP::* accessors are no longer
273 re-generated in the bootstrap, instead
274 they are aliased from the originals
275 - fixed tests to reflect
276 - added Class::MOP::Method (and its subclasses)
278 - adjusted tests for this
279 - added the Class::MOP::Instance attributes
284 - methods are no longer blessed CODE refs
285 but are actual objects which can be CODE-ified
286 - adjusted tests to compensate
287 - adjusted docs for this
290 - changed how methods are dealt with to
291 encapsulate most of the work into the
292 &get_method_map method
293 - made several adjustments for the change
294 in Class::MOP::Method
295 - &add_attribute now checks if you are adding
296 a duplicate name, and properly removes the
297 old one before installing the new one
298 - added tests for this
299 - adjusted docs for this
301 * Class::MOP::Class::Immutable
302 - added caching of &get_method_map
303 - fixed issue with &get_package_symbol
304 - cleaned up the methods that die (patch by David Wheeler)
306 * Class::MOP::Package
307 - added filtering capabilities to
308 &list_all_package_symbols
310 0.34 Sat. Aug. 26, 2006
312 - added the %:methods attribute, which like
313 the $:version and such just actually goes
314 to the symbol table to get it's stuff.
315 However, it makes the MOP more complete.
317 - The &create method now requires that all
318 but the package name now is passed in as
319 named parameters. See docs for more info.
320 - updated docs and tests for this
323 - added &dump method to easily Data::Dumper
327 - cleaned up the initialization of attributes
328 which do not store things in the instance
329 - added the %:methods attribute definition to
332 ~ lots of misc. test cleanup
334 0.33 Sat. Aug. 19, 2006
336 - moved the metaclass cache out of here
337 and it is now in Class::MOP itself.
340 - moved all the metaclass cache stuff here
341 - fixed all tests for this
343 * Class::MOP::Attribute
344 - reference values (other than CODE refs)
345 are no longer allowed for defaults
346 - added tests for this
348 * Class::MOP::Package
349 - fixed an issue with perl 5.8.1 and how it deals
350 with symbol tables. The namespace hash is now
351 always reloaded from the symbol table.
353 ~ lots of misc. documentation cleanup
355 0.32 Sat. Aug. 12, 2006
356 + added Class::MOP::Object so that the
357 metamodel is more complete (and closer
358 to what Perl 6 will probably be).
360 * Class::MOP::Package
361 - refactored entire class, this is now
362 the primary gateway between the metaclass
363 and the Perl 5 symbol table
364 - added many tests for this
365 - this class is now a subclass of
367 - added some tests to reflect this
370 - refactored all symbol table access to
371 use Class::MOP::Package methods instead
374 - adding the $:version attribute in the bootstrap
375 so that Module has a version as an attribute
376 - see comment in Class::MOP for details
377 - added the $:authority attribute to this module
378 as well as an &identifier method, to bring us
379 ever closer to Perl 6 goodness
380 - I have added $AUTHORITY to all the modules
381 - added tests for this
383 * Class::MOP::Instance
384 - added &deinitialize_slot for removing slots
386 - added tests for this
388 * Class::MOP::Attribute
389 - added support for &deinitialize_slot for removing
390 slots from an instance
391 - added tests for this
393 0.31 Sat. July 15, 2006
396 - added &find_method_by_name to locate a method
397 anywhere within the class hierarchy
399 * Class::MOP::Attribute
400 - added &set_value and &get_value for getting
401 the value of the attribute for a particular
404 0.30 Wed. July 5, 2006
405 ---------------------------------------
406 This is the first version of Class::MOP
407 to introduce the immutable features which
408 will be used for optimizating the MOP.
409 This support should still be considered
410 experimental, but moving towards stability.
411 ---------------------------------------
413 * Created Class::MOP::Class::Immutable
415 * Created the Class::MOP::Package and
416 Class::MOP::Module classes to more
417 closely conform to Perl 6's meta-model
420 - now inherits from Class::MOP::Module
421 - several methods moved to ::Module and
422 ::Package and now inherited
423 - added tests for this
425 * Class::MOP::Instance
426 - added an is_inlinable method to allow other
427 classes to check before they attempt to optimize.
428 - added an inline_create_instance to inline
429 instance creation (of course)
432 - the Class::MOP::Class::*_package_variable
433 methods are all now methods of Class::MOP::Package
434 and called *_package_symbol instead. This is
435 because they are now more general purpose symbol
436 table manipulation methods.
438 0.29_02 Thurs. June 22, 2006
439 ++ DEVELOPER RELEASE ++
441 - small change in &create so that it behaves
442 properly when inherited
443 - small fix to &clone_instance
445 0.29_01 Fri. May 12, 2006
446 ++ DEVELOPER RELEASE ++
447 - This release works in combination with
448 Moose 0.09_01, it is a developer release
449 because it introduces a new instance
450 sub-protocol and has not yet been
454 - anon-classes are now properly garbage collected
455 - added tests for this
456 - improved method modifier wrapping
458 * Class::MOP::Instance
459 - added new instance protocol
460 - added tests for this
461 - changed all relevant modules and examples
463 - Class::MOP::Attribute
467 - you no longer need to specify the metaclass
468 itself, if it is not there, Class::MOP::Class
470 - updated tests for this
473 - added ArrayBasedStorage example to show
474 instance storage using ARRAY refs instead of
476 - added tests for this
477 - InsideOutClass is totally revised using the
478 new instance protocol
479 - added more tests for this
481 0.26 Mon. April 24, 2006
483 - added find_attribute_by_name method
484 - added tests and docs for this
485 - some small optimizations
487 * Class::MOP::Attribute
488 - some small optimizations
490 0.25 Thurs. April 20, 2006
492 - added create_anon_class for creating anonymous classes
493 - added tests for this
494 - added get_all_metaclasses, get_all_metaclass_names
495 and get_all_metaclass_instances method to allow
496 access to all the cached metaclass objects.
497 - attribute slot initialization is now the responsibility
498 of the attribute itself, and construct_instance now
499 delegates appropriately
501 * Class::MOP::Attribute
502 - attribute slot initialization is now the responsibility
503 of the attribute itself, so we added a method for it
504 called initialize_instance_slot
507 - adjusted all the examples to use the new attribute
508 initialize_instance_slot method
510 0.24 Tues. April 11, 2006
512 - cleaned up how the before/after/around method
513 modifiers get named with Sub::Name
515 0.23 Thurs. March 30, 2006
517 - fixed the way attribute defaults are handled
518 during instance construction (bug found by chansen)
520 * Class::MOP::Attribute
521 - read-only accessors ('reader') will now die if
522 passed more than one argument (attempting to write
524 - added tests for this
525 - adjusted all /example files to comply
527 0.22 Mon. March 20, 2006
529 - localized $@ in the *_package_variable functions
530 because otherwise, it does ugly things in Moose.
531 - added test case for this
533 0.21 Wed. March 15, 2006
535 - fixed issue where metaclasses are reaped from
536 our cache in global destruction, and so are not
537 available in DESTORY calls
539 0.20 Thurs. March 2, 2006
540 - removed the dependency for Clone since
541 we no longer to deep-cloning by default.
544 - added &package_name, &name and
545 &fully_qualified_name methods, some of
546 which were formerly private subs in
549 * Class::MOP::Method::Wrapped
550 - allows for a method to be wrapped with
551 before, after and around modifiers
552 - added tests and docs for this feature
555 - improved &get_package_symbol
556 - &version and &superclasses now use it
557 - methods are now blessed into Class::MOP::Method
559 - added methods to install CLOS-style method modifiers
560 - &add_before_method_modifier
561 - &add_after_method_modifier
562 - &add_around_method_modifier
563 - added tests and docs for these
564 - added &find_next_method_by_name which finds the
565 equivalent of SUPER::method_name
567 0.12 Thurs. Feb 23, 2006
568 - reduced the dependency on B, no need to always
572 - added docs to the C3 method dispatch order test
573 - fixed missing Algorithm::C3 dependency by making
574 the test skip if it is not installed
576 0.11 Mon Feb. 20, 2006
578 - added example of changing method dispatch order to C3
581 - changed how clone_instance behaves, it now only does a
582 shallow clone (see docs for more details)
583 - added docs and tests
585 0.10 Tues Feb. 14, 2006
586 ** This release was mostly about writing more tests and
587 cleaning out old and dusty code, the MOP should now
588 be considered "ready to use".
590 - adding more tests to get coverage up a little higher,
591 mostly testing errors and edge cases.
592 - test coverage is now at 99%
595 - no longer optionally exports to UNIVERSAL::meta or
596 creates a custom metaclass generator, use the
597 metaclass pragma instead.
600 - fixed a number of minor issues which came up in the
601 error/edge-case tests
603 * Class::MOP::Attribute
604 - fixed a number of minor issues which came up in the
605 error/edge-case tests
608 - fixing the AttributesWithHistory example, it was broken.
610 0.06 Thurs Feb. 9, 2006
612 - adding new metaclass pragma to make setting up the
613 metaclass a little more straightforward
616 - clean up bootstrapping to include more complete
617 attribute definitions for Class::MOP::Class and
618 Class::MOP::Attribute (accessors, readers, writers,
619 etc.) ... it is redundant, but is useful meta-info
623 - fixing minor meta-circularity issue with &meta, it
624 is now more useful for subclasses
625 - added &get_attribute_map as an accessor for the
626 hash of attribute meta objects
627 - &compute_all_applicable_attributes now just returns
628 the attribute meta-object, rather than the HASH ref
629 since all the same info can be gotten from the
630 attribute meta-object itself
631 - updated docs & tests to reflect
632 - added &clone_instance method which does a deep clone
633 of the instance structure created by &construct_instance
634 - added docs & tests for this
635 - added Clone as a dependency
636 - added &new_object and &clone_object convience methods to
637 return blessed new or cloned instances
638 - they handle Class::MOP::Class singletons correctly too
639 - added docs & tests for this
640 - cleaned up the &constuct_class_instance so that it behaves
641 more like &construct_instance (and managed the singletons too)
642 - added the &check_metaclass_compatibility method to make sure
643 that metaclasses are upward and downward compatible.
644 - added tests and docs for this
647 - adjusting code to use the &Class::MOP::Class::meta
649 - adjusting code to use the metaclass pragma
651 0.05 Sat Feb. 4, 2006
653 - added the &attribute_metaclass and &method_metaclass
654 attributes which contain a metaclass name to use for
655 attributes/methods respectively
658 - bootstrap additional attributes for Class::MOP::Class
661 - adjusted the example code and tests to use the new
662 &attribute_metaclass feature of Class::MOP::Class
666 0.04 Fri Feb. 3, 2006
668 - some documentation suggestions from #perl6
670 * Class::MOP::Attribute
671 - improved error messages
674 - added new examples:
675 - AttributesWithHistory
676 - ClassEncapsultedAttributes
678 0.03 Fri Feb. 3, 2006
679 - converted to Module::Build instead of EU::MM
681 * Class::MOP::Attribute
682 - refactored method generation code
683 - attributes are now associated with class directly
686 - refactored the InsideOut example to take advantage
687 of the Class::MOP::Attribute refactoring
688 - changed example files to .pod files and hide thier
689 package names from PAUSE (I don't want to own these
690 namespaces really, they are just examples)
692 0.02 Thurs Feb. 2, 2006
693 - moving examples from t/lib/* to examples/*
694 - adding POD documentation to the examples
696 0.01 Thurs Feb. 2, 2006