1 Revision history for Perl extension Class-MOP.
3 0.46 Fri. Nov. 23, 2007
5 - added the linearized_isa method instead of constantly
6 pruning duplicate classes (this will be even more
7 useful in the 5.10-compat version coming soon)
9 * Class::MOP::Attribute
10 - added the get_read_method_ref and get_write_method_ref
11 methods which allow you to retrieve a CODE ref which
12 can always be used to read or write an attribute.
14 0.45 Thurs. Nov. 13, 2007
15 * Class::MOP::Attribute
16 - Fix error message on confess (groditi)
18 0.44 Thurs. Nov. 13, 2007
19 - Apparently I didn't make dist correctly (groditi)
21 0.43 Thurs. Nov. 13, 2007
23 - Add support for the 'builder' attribute (groditi)
26 - optimise metaclass-already-exists check in
27 construct_class_instance (groditi)
28 - duplicate check into initialize to save a
29 call through (groditi)
31 * Class::MOP::Attribute
32 - Add support for the 'builder' attribute (groditi)
33 - Make predicates check for the existence of a value, not whether
34 it is defined (groditi)
36 * Class::MOP::Instance
37 - Make predicates check for the existence of a value, not whether
38 it is defined (groditi)
40 * Class::MOP::Method::Accessor
41 - made this a subclass of Class::MOP::Method::Generated
42 - removed the relevant attributes
44 * Class::MOP::Method::Constructor
45 - fixed the cached values we had to be more sane
46 - made this a subclass of Class::MOP::Method::Generated
47 - fixed generated constructor so it properly handles
49 - added tests for this
50 - added the option to allow for both inlined and
51 non-inlined constructors.
52 - Update inlined methods for builder and predicate changes (groditi)
54 * Class::MOP::Method::Generated
55 - added this class as an abstract base for the
56 Class::MOP::Method::{Constructor,Accessor} classes
57 - added tests for this
60 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
61 - Tests for new predicate behavior (and corrections to old tests) (groditi)
64 - Update ArrayRef based class example to work with predicate changes
66 0.42 Mon. July 16, 2007
67 !!! Horray for mst, he fixed it !!!
70 - alter symbol table handling to deal with 5.8.x and 5.9.x
73 - Get rid of the crappy workaround from 0.40/41
75 0.41 Sun. July 15, 2007
77 Arghh!!! My TODO test didn't work, so I handle
78 it manually now so that people can use this
79 with 5.9.5/bleadperl without issue.
81 0.40 Tues, July 3, 2007
83 ~ marked a test in 003_methods.t as TODO
84 for perl 5.9.5 (this test is irrelvant to
85 the module functioning on 5.9.5 for the most
88 0.39 Mon. June 18, 2007
89 * Class::MOP::Immutable
90 - added make_metaclass_mutable + docs (groditi)
91 - removed unused variable
92 - added create_immutable_transformer
93 necessary for sane overloading of immutable behavior
94 - tests for this (groditi)
97 - Immutability can now be undone,
98 added make_mutable + tests + docs (groditi)
99 - Massive changes to the way Immutable is done
100 for details see comments next to make_immutable
101 This fixes a bug where custom metaclasses broke
102 when made immutable. We are now keeping one immutable
103 metaclass instance per metaclass instead of just one
104 to prevent isa hierarchy corruption. Memory use will go
105 up, but I suspect it will be neglible.
106 - New tests added for this behavior. (groditi)
108 0.38 Thurs. May 31, 2007
109 ~~ More documentation updates ~~
111 * Class::MOP::Package
112 - we now deal with stub methods properly
113 - added tests for this
114 - fixed some tests failing on 5.9.5 (thanks blblack)
116 * Class::MOP::Attribute
117 - added get_read_method and get_write_method
118 thanks to groditi for this code, tests
120 - added tests and POD for this
123 - fixed RT issue #27329, clone object now
124 handles undef values correctly.
125 - added tests for this
126 - Corrected anon-class handling so that they
127 will not get reaped when instances still
128 exist which need to reference them. This is
129 the correct behavior, hopefully this is an
130 obscure enough feature that there are not too
131 many work arounds out in the wild.
132 - added tests for this by groditi
133 - updated docs to explain this
136 - load custom metaclasses automatically (thanks groditi)
137 - added tests for this behavior
139 0.37 Sat. March 10, 2007
140 ~~ Many, many documentation updates ~~
143 - added &load_class and &is_class_loaded
144 - added tests and docs for these
146 * Class::MOP::Attribute
147 - default now checks the instance with defined to
148 avoid setting off bool-overloads (found by Carl Franks)
152 - bad name in a test, causing meaningless failuress.
158 - All attribute names are now consistent and follow Perl 6
159 style (prefixed with the sigil, and ! as the twigil for
160 private attrs). This should not affect any code, unless
161 you broke encapsulation, in which case, it is your problem
164 !! Class::MOP::Class::Immutable has been removed
166 * Class::MOP::Method::Constructor
167 - this has been moved out of Class::MOP::Class::Immutable
168 and is a proper subclass of Class::MOP::Method now.
171 - this module now uses Class::MOP::Immutable for the
172 immutable transformation instead of
173 Class::MOP::Class::Immutable.
175 + Class::MOP::Immutable
176 - this module now controls the transformation from a mutable
177 to an immutable version of the class. Docs for this will
178 be coming eventually.
181 0.36 Sun. Nov. 5, 2006
183 - added a few 'no warnings' lines to keep annoying
184 (and meaningless) warnings from chirping during
188 - some more bootstrapping is now done on the new
191 * Class::MOP::Class::Immutable
193 - constructor generation is now handled by
194 the Class::MOP::Method::Constructor class
196 * Class::MOP::Method::Constructor
197 - created this to handle constructor generation
198 in Class::MOP::Class::Immutable
200 * Class::MOP::Attribute
202 - attributes now delegate to the
203 Class::MOP::Method::Accessor to generate
206 * Class::MOP::Method::Accessor
207 - all accessor generation functions from
208 Class::MOP::Attribute have been moved here
210 0.35 Sat. Sept. 30, 2006
212 * scripts/class_browser.pl
213 - initial prototype of a class browser, more
214 on this to come. Comments and patches are
218 - All Class::MOP::* accessors are no longer
219 re-generated in the bootstrap, instead
220 they are aliased from the originals
221 - fixed tests to reflect
222 - added Class::MOP::Method (and its subclasses)
224 - adjusted tests for this
225 - added the Class::MOP::Instance attributes
230 - methods are no longer blessed CODE refs
231 but are actual objects which can be CODE-ified
232 - adjusted tests to compensate
233 - adjusted docs for this
236 - changed how methods are dealt with to
237 encapsulate most of the work into the
238 &get_method_map method
239 - made several adjustments for the change
240 in Class::MOP::Method
241 - &add_attribute now checks if you are adding
242 a duplicate name, and properly removes the
243 old one before installing the new one
244 - added tests for this
245 - adjusted docs for this
247 * Class::MOP::Class::Immutable
248 - added caching of &get_method_map
249 - fixed issue with &get_package_symbol
250 - cleaned up the methods that die (patch by David Wheeler)
252 * Class::MOP::Package
253 - added filtering capabilities to
254 &list_all_package_symbols
256 0.34 Sat. Aug. 26, 2006
258 - added the %:methods attribute, which like
259 the $:version and such just actually goes
260 to the symbol table to get it's stuff.
261 However, it makes the MOP more complete.
263 - The &create method now requires that all
264 but the package name now is passed in as
265 named parameters. See docs for more info.
266 - updated docs and tests for this
269 - added &dump method to easily Data::Dumper
273 - cleaned up the initialization of attributes
274 which do not store things in the instance
275 - added the %:methods attribute definition to
278 ~ lots of misc. test cleanup
280 0.33 Sat. Aug. 19, 2006
282 - moved the metaclass cache out of here
283 and it is now in Class::MOP itself.
286 - moved all the metaclass cache stuff here
287 - fixed all tests for this
289 * Class::MOP::Attribute
290 - reference values (other than CODE refs)
291 are no longer allowed for defaults
292 - added tests for this
294 * Class::MOP::Package
295 - fixed an issue with perl 5.8.1 and how it deals
296 with symbol tables. The namespace hash is now
297 always reloaded from the symbol table.
299 ~ lots of misc. documentation cleanup
301 0.32 Sat. Aug. 12, 2006
302 + added Class::MOP::Object so that the
303 metamodel is more complete (and closer
304 to what Perl 6 will probably be).
306 * Class::MOP::Package
307 - refactored entire class, this is now
308 the primary gateway between the metaclass
309 and the Perl 5 symbol table
310 - added many tests for this
311 - this class is now a subclass of
313 - added some tests to reflect this
316 - refactored all symbol table access to
317 use Class::MOP::Package methods instead
320 - adding the $:version attribute in the bootstrap
321 so that Module has a version as an attribute
322 - see comment in Class::MOP for details
323 - added the $:authority attribute to this module
324 as well as an &identifier method, to bring us
325 ever closer to Perl 6 goodness
326 - I have added $AUTHORITY to all the modules
327 - added tests for this
329 * Class::MOP::Instance
330 - added &deinitialize_slot for removing slots
332 - added tests for this
334 * Class::MOP::Attribute
335 - added support for &deinitialize_slot for removing
336 slots from an instance
337 - added tests for this
339 0.31 Sat. July 15, 2006
342 - added &find_method_by_name to locate a method
343 anywhere within the class hierarchy
345 * Class::MOP::Attribute
346 - added &set_value and &get_value for getting
347 the value of the attribute for a particular
350 0.30 Wed. July 5, 2006
351 ---------------------------------------
352 This is the first version of Class::MOP
353 to introduce the immutable features which
354 will be used for optimizating the MOP.
355 This support should still be considered
356 experimental, but moving towards stability.
357 ---------------------------------------
359 * Created Class::MOP::Class::Immutable
361 * Created the Class::MOP::Package and
362 Class::MOP::Module classes to more
363 closely conform to Perl 6's meta-model
366 - now inherits from Class::MOP::Module
367 - several methods moved to ::Module and
368 ::Package and now inherited
369 - added tests for this
371 * Class::MOP::Instance
372 - added an is_inlinable method to allow other
373 classes to check before they attempt to optimize.
374 - added an inline_create_instance to inline
375 instance creation (of course)
378 - the Class::MOP::Class::*_package_variable
379 methods are all now methods of Class::MOP::Package
380 and called *_package_symbol instead. This is
381 because they are now more general purpose symbol
382 table manipulation methods.
384 0.29_02 Thurs. June 22, 2006
385 ++ DEVELOPER RELEASE ++
387 - small change in &create so that it behaves
388 properly when inherited
389 - small fix to &clone_instance
391 0.29_01 Fri. May 12, 2006
392 ++ DEVELOPER RELEASE ++
393 - This release works in combination with
394 Moose 0.09_01, it is a developer release
395 because it introduces a new instance
396 sub-protocol and has not yet been
400 - anon-classes are now properly garbage collected
401 - added tests for this
402 - improved method modifier wrapping
404 * Class::MOP::Instance
405 - added new instance protocol
406 - added tests for this
407 - changed all relevant modules and examples
409 - Class::MOP::Attribute
413 - you no longer need to specify the metaclass
414 itself, if it is not there, Class::MOP::Class
416 - updated tests for this
419 - added ArrayBasedStorage example to show
420 instance storage using ARRAY refs instead of
422 - added tests for this
423 - InsideOutClass is totally revised using the
424 new instance protocol
425 - added more tests for this
427 0.26 Mon. April 24, 2006
429 - added find_attribute_by_name method
430 - added tests and docs for this
431 - some small optimizations
433 * Class::MOP::Attribute
434 - some small optimizations
436 0.25 Thurs. April 20, 2006
438 - added create_anon_class for creating anonymous classes
439 - added tests for this
440 - added get_all_metaclasses, get_all_metaclass_names
441 and get_all_metaclass_instances method to allow
442 access to all the cached metaclass objects.
443 - attribute slot initialization is now the responsibility
444 of the attribute itself, and construct_instance now
445 delegates appropriately
447 * Class::MOP::Attribute
448 - attribute slot initialization is now the responsibility
449 of the attribute itself, so we added a method for it
450 called initialize_instance_slot
453 - adjusted all the examples to use the new attribute
454 initialize_instance_slot method
456 0.24 Tues. April 11, 2006
458 - cleaned up how the before/after/around method
459 modifiers get named with Sub::Name
461 0.23 Thurs. March 30, 2006
463 - fixed the way attribute defaults are handled
464 during instance construction (bug found by chansen)
466 * Class::MOP::Attribute
467 - read-only accessors ('reader') will now die if
468 passed more than one argument (attempting to write
470 - added tests for this
471 - adjusted all /example files to comply
473 0.22 Mon. March 20, 2006
475 - localized $@ in the *_package_variable functions
476 because otherwise, it does ugly things in Moose.
477 - added test case for this
479 0.21 Wed. March 15, 2006
481 - fixed issue where metaclasses are reaped from
482 our cache in global destruction, and so are not
483 available in DESTORY calls
485 0.20 Thurs. March 2, 2006
486 - removed the dependency for Clone since
487 we no longer to deep-cloning by default.
490 - added &package_name, &name and
491 &fully_qualified_name methods, some of
492 which were formerly private subs in
495 * Class::MOP::Method::Wrapped
496 - allows for a method to be wrapped with
497 before, after and around modifiers
498 - added tests and docs for this feature
501 - improved &get_package_symbol
502 - &version and &superclasses now use it
503 - methods are now blessed into Class::MOP::Method
505 - added methods to install CLOS-style method modifiers
506 - &add_before_method_modifier
507 - &add_after_method_modifier
508 - &add_around_method_modifier
509 - added tests and docs for these
510 - added &find_next_method_by_name which finds the
511 equivalent of SUPER::method_name
513 0.12 Thurs. Feb 23, 2006
514 - reduced the dependency on B, no need to always
518 - added docs to the C3 method dispatch order test
519 - fixed missing Algorithm::C3 dependency by making
520 the test skip if it is not installed
522 0.11 Mon Feb. 20, 2006
524 - added example of changing method dispatch order to C3
527 - changed how clone_instance behaves, it now only does a
528 shallow clone (see docs for more details)
529 - added docs and tests
531 0.10 Tues Feb. 14, 2006
532 ** This release was mostly about writing more tests and
533 cleaning out old and dusty code, the MOP should now
534 be considered "ready to use".
536 - adding more tests to get coverage up a little higher,
537 mostly testing errors and edge cases.
538 - test coverage is now at 99%
541 - no longer optionally exports to UNIVERSAL::meta or
542 creates a custom metaclass generator, use the
543 metaclass pragma instead.
546 - fixed a number of minor issues which came up in the
547 error/edge-case tests
549 * Class::MOP::Attribute
550 - fixed a number of minor issues which came up in the
551 error/edge-case tests
554 - fixing the AttributesWithHistory example, it was broken.
556 0.06 Thurs Feb. 9, 2006
558 - adding new metaclass pragma to make setting up the
559 metaclass a little more straightforward
562 - clean up bootstrapping to include more complete
563 attribute definitions for Class::MOP::Class and
564 Class::MOP::Attribute (accessors, readers, writers,
565 etc.) ... it is redundant, but is useful meta-info
569 - fixing minor meta-circularity issue with &meta, it
570 is now more useful for subclasses
571 - added &get_attribute_map as an accessor for the
572 hash of attribute meta objects
573 - &compute_all_applicable_attributes now just returns
574 the attribute meta-object, rather than the HASH ref
575 since all the same info can be gotten from the
576 attribute meta-object itself
577 - updated docs & tests to reflect
578 - added &clone_instance method which does a deep clone
579 of the instance structure created by &construct_instance
580 - added docs & tests for this
581 - added Clone as a dependency
582 - added &new_object and &clone_object convience methods to
583 return blessed new or cloned instances
584 - they handle Class::MOP::Class singletons correctly too
585 - added docs & tests for this
586 - cleaned up the &constuct_class_instance so that it behaves
587 more like &construct_instance (and managed the singletons too)
588 - added the &check_metaclass_compatibility method to make sure
589 that metaclasses are upward and downward compatible.
590 - added tests and docs for this
593 - adjusting code to use the &Class::MOP::Class::meta
595 - adjusting code to use the metaclass pragma
597 0.05 Sat Feb. 4, 2006
599 - added the &attribute_metaclass and &method_metaclass
600 attributes which contain a metaclass name to use for
601 attributes/methods respectively
604 - bootstrap additional attributes for Class::MOP::Class
607 - adjusted the example code and tests to use the new
608 &attribute_metaclass feature of Class::MOP::Class
612 0.04 Fri Feb. 3, 2006
614 - some documentation suggestions from #perl6
616 * Class::MOP::Attribute
617 - improved error messages
620 - added new examples:
621 - AttributesWithHistory
622 - ClassEncapsultedAttributes
624 0.03 Fri Feb. 3, 2006
625 - converted to Module::Build instead of EU::MM
627 * Class::MOP::Attribute
628 - refactored method generation code
629 - attributes are now associated with class directly
632 - refactored the InsideOut example to take advantage
633 of the Class::MOP::Attribute refactoring
634 - changed example files to .pod files and hide thier
635 package names from PAUSE (I don't want to own these
636 namespaces really, they are just examples)
638 0.02 Thurs Feb. 2, 2006
639 - moving examples from t/lib/* to examples/*
640 - adding POD documentation to the examples
642 0.01 Thurs Feb. 2, 2006