1 Revision history for Perl extension Class-MOP.
3 0.41 Sun. July 15, 2007
5 Arghh!!! My TODO test didn't work, so I handle
6 it manually now so that people can use this
7 with 5.9.5/bleadperl without issue.
9 0.40 Tues, July 3, 2007
11 ~ marked a test in 003_methods.t as TODO
12 for perl 5.9.5 (this test is irrelvant to
13 the module functioning on 5.9.5 for the most
16 0.39 Mon. June 18, 2007
17 * Class::MOP::Immutable
18 - added make_metaclass_mutable + docs (groditi)
19 - removed unused variable
20 - added create_immutable_transformer
21 necessary for sane overloading of immutable behavior
22 - tests for this (groditi)
25 - Immutability can now be undone,
26 added make_mutable + tests + docs (groditi)
27 - Massive changes to the way Immutable is done
28 for details see comments next to make_immutable
29 This fixes a bug where custom metaclasses broke
30 when made immutable. We are now keeping one immutable
31 metaclass instance per metaclass instead of just one
32 to prevent isa hierarchy corruption. Memory use will go
33 up, but I suspect it will be neglible.
34 - New tests added for this behavior. (groditi)
36 0.38 Thurs. May 31, 2007
37 ~~ More documentation updates ~~
40 - we now deal with stub methods properly
41 - added tests for this
42 - fixed some tests failing on 5.9.5 (thanks blblack)
44 * Class::MOP::Attribute
45 - added get_read_method and get_write_method
46 thanks to groditi for this code, tests
48 - added tests and POD for this
51 - fixed RT issue #27329, clone object now
52 handles undef values correctly.
53 - added tests for this
54 - Corrected anon-class handling so that they
55 will not get reaped when instances still
56 exist which need to reference them. This is
57 the correct behavior, hopefully this is an
58 obscure enough feature that there are not too
59 many work arounds out in the wild.
60 - added tests for this by groditi
61 - updated docs to explain this
64 - load custom metaclasses automatically (thanks groditi)
65 - added tests for this behavior
67 0.37 Sat. March 10, 2007
68 ~~ Many, many documentation updates ~~
71 - added &load_class and &is_class_loaded
72 - added tests and docs for these
74 * Class::MOP::Attribute
75 - default now checks the instance with defined to
76 avoid setting off bool-overloads (found by Carl Franks)
80 - bad name in a test, causing meaningless failuress.
86 - All attribute names are now consistent and follow Perl 6
87 style (prefixed with the sigil, and ! as the twigil for
88 private attrs). This should not affect any code, unless
89 you broke encapsulation, in which case, it is your problem
92 !! Class::MOP::Class::Immutable has been removed
94 * Class::MOP::Method::Constructor
95 - this has been moved out of Class::MOP::Class::Immutable
96 and is a proper subclass of Class::MOP::Method now.
99 - this module now uses Class::MOP::Immutable for the
100 immutable transformation instead of
101 Class::MOP::Class::Immutable.
103 + Class::MOP::Immutable
104 - this module now controls the transformation from a mutable
105 to an immutable version of the class. Docs for this will
106 be coming eventually.
109 0.36 Sun. Nov. 5, 2006
111 - added a few 'no warnings' lines to keep annoying
112 (and meaningless) warnings from chirping during
116 - some more bootstrapping is now done on the new
119 * Class::MOP::Class::Immutable
121 - constructor generation is now handled by
122 the Class::MOP::Method::Constructor class
124 * Class::MOP::Method::Constructor
125 - created this to handle constructor generation
126 in Class::MOP::Class::Immutable
128 * Class::MOP::Attribute
130 - attributes now delegate to the
131 Class::MOP::Method::Accessor to generate
134 * Class::MOP::Method::Accessor
135 - all accessor generation functions from
136 Class::MOP::Attribute have been moved here
138 0.35 Sat. Sept. 30, 2006
140 * scripts/class_browser.pl
141 - initial prototype of a class browser, more
142 on this to come. Comments and patches are
146 - All Class::MOP::* accessors are no longer
147 re-generated in the bootstrap, instead
148 they are aliased from the originals
149 - fixed tests to reflect
150 - added Class::MOP::Method (and its subclasses)
152 - adjusted tests for this
153 - added the Class::MOP::Instance attributes
158 - methods are no longer blessed CODE refs
159 but are actual objects which can be CODE-ified
160 - adjusted tests to compensate
161 - adjusted docs for this
164 - changed how methods are dealt with to
165 encapsulate most of the work into the
166 &get_method_map method
167 - made several adjustments for the change
168 in Class::MOP::Method
169 - &add_attribute now checks if you are adding
170 a duplicate name, and properly removes the
171 old one before installing the new one
172 - added tests for this
173 - adjusted docs for this
175 * Class::MOP::Class::Immutable
176 - added caching of &get_method_map
177 - fixed issue with &get_package_symbol
178 - cleaned up the methods that die (patch by David Wheeler)
180 * Class::MOP::Package
181 - added filtering capabilities to
182 &list_all_package_symbols
184 0.34 Sat. Aug. 26, 2006
186 - added the %:methods attribute, which like
187 the $:version and such just actually goes
188 to the symbol table to get it's stuff.
189 However, it makes the MOP more complete.
191 - The &create method now requires that all
192 but the package name now is passed in as
193 named parameters. See docs for more info.
194 - updated docs and tests for this
197 - added &dump method to easily Data::Dumper
201 - cleaned up the initialization of attributes
202 which do not store things in the instance
203 - added the %:methods attribute definition to
206 ~ lots of misc. test cleanup
208 0.33 Sat. Aug. 19, 2006
210 - moved the metaclass cache out of here
211 and it is now in Class::MOP itself.
214 - moved all the metaclass cache stuff here
215 - fixed all tests for this
217 * Class::MOP::Attribute
218 - reference values (other than CODE refs)
219 are no longer allowed for defaults
220 - added tests for this
222 * Class::MOP::Package
223 - fixed an issue with perl 5.8.1 and how it deals
224 with symbol tables. The namespace hash is now
225 always reloaded from the symbol table.
227 ~ lots of misc. documentation cleanup
229 0.32 Sat. Aug. 12, 2006
230 + added Class::MOP::Object so that the
231 metamodel is more complete (and closer
232 to what Perl 6 will probably be).
234 * Class::MOP::Package
235 - refactored entire class, this is now
236 the primary gateway between the metaclass
237 and the Perl 5 symbol table
238 - added many tests for this
239 - this class is now a subclass of
241 - added some tests to reflect this
244 - refactored all symbol table access to
245 use Class::MOP::Package methods instead
248 - adding the $:version attribute in the bootstrap
249 so that Module has a version as an attribute
250 - see comment in Class::MOP for details
251 - added the $:authority attribute to this module
252 as well as an &identifier method, to bring us
253 ever closer to Perl 6 goodness
254 - I have added $AUTHORITY to all the modules
255 - added tests for this
257 * Class::MOP::Instance
258 - added &deinitialize_slot for removing slots
260 - added tests for this
262 * Class::MOP::Attribute
263 - added support for &deinitialize_slot for removing
264 slots from an instance
265 - added tests for this
267 0.31 Sat. July 15, 2006
270 - added &find_method_by_name to locate a method
271 anywhere within the class hierarchy
273 * Class::MOP::Attribute
274 - added &set_value and &get_value for getting
275 the value of the attribute for a particular
278 0.30 Wed. July 5, 2006
279 ---------------------------------------
280 This is the first version of Class::MOP
281 to introduce the immutable features which
282 will be used for optimizating the MOP.
283 This support should still be considered
284 experimental, but moving towards stability.
285 ---------------------------------------
287 * Created Class::MOP::Class::Immutable
289 * Created the Class::MOP::Package and
290 Class::MOP::Module classes to more
291 closely conform to Perl 6's meta-model
294 - now inherits from Class::MOP::Module
295 - several methods moved to ::Module and
296 ::Package and now inherited
297 - added tests for this
299 * Class::MOP::Instance
300 - added an is_inlinable method to allow other
301 classes to check before they attempt to optimize.
302 - added an inline_create_instance to inline
303 instance creation (of course)
306 - the Class::MOP::Class::*_package_variable
307 methods are all now methods of Class::MOP::Package
308 and called *_package_symbol instead. This is
309 because they are now more general purpose symbol
310 table manipulation methods.
312 0.29_02 Thurs. June 22, 2006
313 ++ DEVELOPER RELEASE ++
315 - small change in &create so that it behaves
316 properly when inherited
317 - small fix to &clone_instance
319 0.29_01 Fri. May 12, 2006
320 ++ DEVELOPER RELEASE ++
321 - This release works in combination with
322 Moose 0.09_01, it is a developer release
323 because it introduces a new instance
324 sub-protocol and has not yet been
328 - anon-classes are now properly garbage collected
329 - added tests for this
330 - improved method modifier wrapping
332 * Class::MOP::Instance
333 - added new instance protocol
334 - added tests for this
335 - changed all relevant modules and examples
337 - Class::MOP::Attribute
341 - you no longer need to specify the metaclass
342 itself, if it is not there, Class::MOP::Class
344 - updated tests for this
347 - added ArrayBasedStorage example to show
348 instance storage using ARRAY refs instead of
350 - added tests for this
351 - InsideOutClass is totally revised using the
352 new instance protocol
353 - added more tests for this
355 0.26 Mon. April 24, 2006
357 - added find_attribute_by_name method
358 - added tests and docs for this
359 - some small optimizations
361 * Class::MOP::Attribute
362 - some small optimizations
364 0.25 Thurs. April 20, 2006
366 - added create_anon_class for creating anonymous classes
367 - added tests for this
368 - added get_all_metaclasses, get_all_metaclass_names
369 and get_all_metaclass_instances method to allow
370 access to all the cached metaclass objects.
371 - attribute slot initialization is now the responsibility
372 of the attribute itself, and construct_instance now
373 delegates appropriately
375 * Class::MOP::Attribute
376 - attribute slot initialization is now the responsibility
377 of the attribute itself, so we added a method for it
378 called initialize_instance_slot
381 - adjusted all the examples to use the new attribute
382 initialize_instance_slot method
384 0.24 Tues. April 11, 2006
386 - cleaned up how the before/after/around method
387 modifiers get named with Sub::Name
389 0.23 Thurs. March 30, 2006
391 - fixed the way attribute defaults are handled
392 during instance construction (bug found by chansen)
394 * Class::MOP::Attribute
395 - read-only accessors ('reader') will now die if
396 passed more than one argument (attempting to write
398 - added tests for this
399 - adjusted all /example files to comply
401 0.22 Mon. March 20, 2006
403 - localized $@ in the *_package_variable functions
404 because otherwise, it does ugly things in Moose.
405 - added test case for this
407 0.21 Wed. March 15, 2006
409 - fixed issue where metaclasses are reaped from
410 our cache in global destruction, and so are not
411 available in DESTORY calls
413 0.20 Thurs. March 2, 2006
414 - removed the dependency for Clone since
415 we no longer to deep-cloning by default.
418 - added &package_name, &name and
419 &fully_qualified_name methods, some of
420 which were formerly private subs in
423 * Class::MOP::Method::Wrapped
424 - allows for a method to be wrapped with
425 before, after and around modifiers
426 - added tests and docs for this feature
429 - improved &get_package_symbol
430 - &version and &superclasses now use it
431 - methods are now blessed into Class::MOP::Method
433 - added methods to install CLOS-style method modifiers
434 - &add_before_method_modifier
435 - &add_after_method_modifier
436 - &add_around_method_modifier
437 - added tests and docs for these
438 - added &find_next_method_by_name which finds the
439 equivalent of SUPER::method_name
441 0.12 Thurs. Feb 23, 2006
442 - reduced the dependency on B, no need to always
446 - added docs to the C3 method dispatch order test
447 - fixed missing Algorithm::C3 dependency by making
448 the test skip if it is not installed
450 0.11 Mon Feb. 20, 2006
452 - added example of changing method dispatch order to C3
455 - changed how clone_instance behaves, it now only does a
456 shallow clone (see docs for more details)
457 - added docs and tests
459 0.10 Tues Feb. 14, 2006
460 ** This release was mostly about writing more tests and
461 cleaning out old and dusty code, the MOP should now
462 be considered "ready to use".
464 - adding more tests to get coverage up a little higher,
465 mostly testing errors and edge cases.
466 - test coverage is now at 99%
469 - no longer optionally exports to UNIVERSAL::meta or
470 creates a custom metaclass generator, use the
471 metaclass pragma instead.
474 - fixed a number of minor issues which came up in the
475 error/edge-case tests
477 * Class::MOP::Attribute
478 - fixed a number of minor issues which came up in the
479 error/edge-case tests
482 - fixing the AttributesWithHistory example, it was broken.
484 0.06 Thurs Feb. 9, 2006
486 - adding new metaclass pragma to make setting up the
487 metaclass a little more straightforward
490 - clean up bootstrapping to include more complete
491 attribute definitions for Class::MOP::Class and
492 Class::MOP::Attribute (accessors, readers, writers,
493 etc.) ... it is redundant, but is useful meta-info
497 - fixing minor meta-circularity issue with &meta, it
498 is now more useful for subclasses
499 - added &get_attribute_map as an accessor for the
500 hash of attribute meta objects
501 - &compute_all_applicable_attributes now just returns
502 the attribute meta-object, rather than the HASH ref
503 since all the same info can be gotten from the
504 attribute meta-object itself
505 - updated docs & tests to reflect
506 - added &clone_instance method which does a deep clone
507 of the instance structure created by &construct_instance
508 - added docs & tests for this
509 - added Clone as a dependency
510 - added &new_object and &clone_object convience methods to
511 return blessed new or cloned instances
512 - they handle Class::MOP::Class singletons correctly too
513 - added docs & tests for this
514 - cleaned up the &constuct_class_instance so that it behaves
515 more like &construct_instance (and managed the singletons too)
516 - added the &check_metaclass_compatibility method to make sure
517 that metaclasses are upward and downward compatible.
518 - added tests and docs for this
521 - adjusting code to use the &Class::MOP::Class::meta
523 - adjusting code to use the metaclass pragma
525 0.05 Sat Feb. 4, 2006
527 - added the &attribute_metaclass and &method_metaclass
528 attributes which contain a metaclass name to use for
529 attributes/methods respectively
532 - bootstrap additional attributes for Class::MOP::Class
535 - adjusted the example code and tests to use the new
536 &attribute_metaclass feature of Class::MOP::Class
540 0.04 Fri Feb. 3, 2006
542 - some documentation suggestions from #perl6
544 * Class::MOP::Attribute
545 - improved error messages
548 - added new examples:
549 - AttributesWithHistory
550 - ClassEncapsultedAttributes
552 0.03 Fri Feb. 3, 2006
553 - converted to Module::Build instead of EU::MM
555 * Class::MOP::Attribute
556 - refactored method generation code
557 - attributes are now associated with class directly
560 - refactored the InsideOut example to take advantage
561 of the Class::MOP::Attribute refactoring
562 - changed example files to .pod files and hide thier
563 package names from PAUSE (I don't want to own these
564 namespaces really, they are just examples)
566 0.02 Thurs Feb. 2, 2006
567 - moving examples from t/lib/* to examples/*
568 - adding POD documentation to the examples
570 0.01 Thurs Feb. 2, 2006