1 Revision history for Perl extension Class-MOP.
3 0.40 Tues, July 3, 2007
5 ~ marked a test in 003_methods.t as TODO
6 for perl 5.9.5 (this test is irrelvant to
7 the module functioning on 5.9.5 for the most
10 0.39 Mon. June 18, 2007
11 * Class::MOP::Immutable
12 - added make_metaclass_mutable + docs (groditi)
13 - removed unused variable
14 - added create_immutable_transformer
15 necessary for sane overloading of immutable behavior
16 - tests for this (groditi)
19 - Immutability can now be undone,
20 added make_mutable + tests + docs (groditi)
21 - Massive changes to the way Immutable is done
22 for details see comments next to make_immutable
23 This fixes a bug where custom metaclasses broke
24 when made immutable. We are now keeping one immutable
25 metaclass instance per metaclass instead of just one
26 to prevent isa hierarchy corruption. Memory use will go
27 up, but I suspect it will be neglible.
28 - New tests added for this behavior. (groditi)
30 0.38 Thurs. May 31, 2007
31 ~~ More documentation updates ~~
34 - we now deal with stub methods properly
35 - added tests for this
36 - fixed some tests failing on 5.9.5 (thanks blblack)
38 * Class::MOP::Attribute
39 - added get_read_method and get_write_method
40 thanks to groditi for this code, tests
42 - added tests and POD for this
45 - fixed RT issue #27329, clone object now
46 handles undef values correctly.
47 - added tests for this
48 - Corrected anon-class handling so that they
49 will not get reaped when instances still
50 exist which need to reference them. This is
51 the correct behavior, hopefully this is an
52 obscure enough feature that there are not too
53 many work arounds out in the wild.
54 - added tests for this by groditi
55 - updated docs to explain this
58 - load custom metaclasses automatically (thanks groditi)
59 - added tests for this behavior
61 0.37 Sat. March 10, 2007
62 ~~ Many, many documentation updates ~~
65 - added &load_class and &is_class_loaded
66 - added tests and docs for these
68 * Class::MOP::Attribute
69 - default now checks the instance with defined to
70 avoid setting off bool-overloads (found by Carl Franks)
74 - bad name in a test, causing meaningless failuress.
80 - All attribute names are now consistent and follow Perl 6
81 style (prefixed with the sigil, and ! as the twigil for
82 private attrs). This should not affect any code, unless
83 you broke encapsulation, in which case, it is your problem
86 !! Class::MOP::Class::Immutable has been removed
88 * Class::MOP::Method::Constructor
89 - this has been moved out of Class::MOP::Class::Immutable
90 and is a proper subclass of Class::MOP::Method now.
93 - this module now uses Class::MOP::Immutable for the
94 immutable transformation instead of
95 Class::MOP::Class::Immutable.
97 + Class::MOP::Immutable
98 - this module now controls the transformation from a mutable
99 to an immutable version of the class. Docs for this will
100 be coming eventually.
103 0.36 Sun. Nov. 5, 2006
105 - added a few 'no warnings' lines to keep annoying
106 (and meaningless) warnings from chirping during
110 - some more bootstrapping is now done on the new
113 * Class::MOP::Class::Immutable
115 - constructor generation is now handled by
116 the Class::MOP::Method::Constructor class
118 * Class::MOP::Method::Constructor
119 - created this to handle constructor generation
120 in Class::MOP::Class::Immutable
122 * Class::MOP::Attribute
124 - attributes now delegate to the
125 Class::MOP::Method::Accessor to generate
128 * Class::MOP::Method::Accessor
129 - all accessor generation functions from
130 Class::MOP::Attribute have been moved here
132 0.35 Sat. Sept. 30, 2006
134 * scripts/class_browser.pl
135 - initial prototype of a class browser, more
136 on this to come. Comments and patches are
140 - All Class::MOP::* accessors are no longer
141 re-generated in the bootstrap, instead
142 they are aliased from the originals
143 - fixed tests to reflect
144 - added Class::MOP::Method (and its subclasses)
146 - adjusted tests for this
147 - added the Class::MOP::Instance attributes
152 - methods are no longer blessed CODE refs
153 but are actual objects which can be CODE-ified
154 - adjusted tests to compensate
155 - adjusted docs for this
158 - changed how methods are dealt with to
159 encapsulate most of the work into the
160 &get_method_map method
161 - made several adjustments for the change
162 in Class::MOP::Method
163 - &add_attribute now checks if you are adding
164 a duplicate name, and properly removes the
165 old one before installing the new one
166 - added tests for this
167 - adjusted docs for this
169 * Class::MOP::Class::Immutable
170 - added caching of &get_method_map
171 - fixed issue with &get_package_symbol
172 - cleaned up the methods that die (patch by David Wheeler)
174 * Class::MOP::Package
175 - added filtering capabilities to
176 &list_all_package_symbols
178 0.34 Sat. Aug. 26, 2006
180 - added the %:methods attribute, which like
181 the $:version and such just actually goes
182 to the symbol table to get it's stuff.
183 However, it makes the MOP more complete.
185 - The &create method now requires that all
186 but the package name now is passed in as
187 named parameters. See docs for more info.
188 - updated docs and tests for this
191 - added &dump method to easily Data::Dumper
195 - cleaned up the initialization of attributes
196 which do not store things in the instance
197 - added the %:methods attribute definition to
200 ~ lots of misc. test cleanup
202 0.33 Sat. Aug. 19, 2006
204 - moved the metaclass cache out of here
205 and it is now in Class::MOP itself.
208 - moved all the metaclass cache stuff here
209 - fixed all tests for this
211 * Class::MOP::Attribute
212 - reference values (other than CODE refs)
213 are no longer allowed for defaults
214 - added tests for this
216 * Class::MOP::Package
217 - fixed an issue with perl 5.8.1 and how it deals
218 with symbol tables. The namespace hash is now
219 always reloaded from the symbol table.
221 ~ lots of misc. documentation cleanup
223 0.32 Sat. Aug. 12, 2006
224 + added Class::MOP::Object so that the
225 metamodel is more complete (and closer
226 to what Perl 6 will probably be).
228 * Class::MOP::Package
229 - refactored entire class, this is now
230 the primary gateway between the metaclass
231 and the Perl 5 symbol table
232 - added many tests for this
233 - this class is now a subclass of
235 - added some tests to reflect this
238 - refactored all symbol table access to
239 use Class::MOP::Package methods instead
242 - adding the $:version attribute in the bootstrap
243 so that Module has a version as an attribute
244 - see comment in Class::MOP for details
245 - added the $:authority attribute to this module
246 as well as an &identifier method, to bring us
247 ever closer to Perl 6 goodness
248 - I have added $AUTHORITY to all the modules
249 - added tests for this
251 * Class::MOP::Instance
252 - added &deinitialize_slot for removing slots
254 - added tests for this
256 * Class::MOP::Attribute
257 - added support for &deinitialize_slot for removing
258 slots from an instance
259 - added tests for this
261 0.31 Sat. July 15, 2006
264 - added &find_method_by_name to locate a method
265 anywhere within the class hierarchy
267 * Class::MOP::Attribute
268 - added &set_value and &get_value for getting
269 the value of the attribute for a particular
272 0.30 Wed. July 5, 2006
273 ---------------------------------------
274 This is the first version of Class::MOP
275 to introduce the immutable features which
276 will be used for optimizating the MOP.
277 This support should still be considered
278 experimental, but moving towards stability.
279 ---------------------------------------
281 * Created Class::MOP::Class::Immutable
283 * Created the Class::MOP::Package and
284 Class::MOP::Module classes to more
285 closely conform to Perl 6's meta-model
288 - now inherits from Class::MOP::Module
289 - several methods moved to ::Module and
290 ::Package and now inherited
291 - added tests for this
293 * Class::MOP::Instance
294 - added an is_inlinable method to allow other
295 classes to check before they attempt to optimize.
296 - added an inline_create_instance to inline
297 instance creation (of course)
300 - the Class::MOP::Class::*_package_variable
301 methods are all now methods of Class::MOP::Package
302 and called *_package_symbol instead. This is
303 because they are now more general purpose symbol
304 table manipulation methods.
306 0.29_02 Thurs. June 22, 2006
307 ++ DEVELOPER RELEASE ++
309 - small change in &create so that it behaves
310 properly when inherited
311 - small fix to &clone_instance
313 0.29_01 Fri. May 12, 2006
314 ++ DEVELOPER RELEASE ++
315 - This release works in combination with
316 Moose 0.09_01, it is a developer release
317 because it introduces a new instance
318 sub-protocol and has not yet been
322 - anon-classes are now properly garbage collected
323 - added tests for this
324 - improved method modifier wrapping
326 * Class::MOP::Instance
327 - added new instance protocol
328 - added tests for this
329 - changed all relevant modules and examples
331 - Class::MOP::Attribute
335 - you no longer need to specify the metaclass
336 itself, if it is not there, Class::MOP::Class
338 - updated tests for this
341 - added ArrayBasedStorage example to show
342 instance storage using ARRAY refs instead of
344 - added tests for this
345 - InsideOutClass is totally revised using the
346 new instance protocol
347 - added more tests for this
349 0.26 Mon. April 24, 2006
351 - added find_attribute_by_name method
352 - added tests and docs for this
353 - some small optimizations
355 * Class::MOP::Attribute
356 - some small optimizations
358 0.25 Thurs. April 20, 2006
360 - added create_anon_class for creating anonymous classes
361 - added tests for this
362 - added get_all_metaclasses, get_all_metaclass_names
363 and get_all_metaclass_instances method to allow
364 access to all the cached metaclass objects.
365 - attribute slot initialization is now the responsibility
366 of the attribute itself, and construct_instance now
367 delegates appropriately
369 * Class::MOP::Attribute
370 - attribute slot initialization is now the responsibility
371 of the attribute itself, so we added a method for it
372 called initialize_instance_slot
375 - adjusted all the examples to use the new attribute
376 initialize_instance_slot method
378 0.24 Tues. April 11, 2006
380 - cleaned up how the before/after/around method
381 modifiers get named with Sub::Name
383 0.23 Thurs. March 30, 2006
385 - fixed the way attribute defaults are handled
386 during instance construction (bug found by chansen)
388 * Class::MOP::Attribute
389 - read-only accessors ('reader') will now die if
390 passed more than one argument (attempting to write
392 - added tests for this
393 - adjusted all /example files to comply
395 0.22 Mon. March 20, 2006
397 - localized $@ in the *_package_variable functions
398 because otherwise, it does ugly things in Moose.
399 - added test case for this
401 0.21 Wed. March 15, 2006
403 - fixed issue where metaclasses are reaped from
404 our cache in global destruction, and so are not
405 available in DESTORY calls
407 0.20 Thurs. March 2, 2006
408 - removed the dependency for Clone since
409 we no longer to deep-cloning by default.
412 - added &package_name, &name and
413 &fully_qualified_name methods, some of
414 which were formerly private subs in
417 * Class::MOP::Method::Wrapped
418 - allows for a method to be wrapped with
419 before, after and around modifiers
420 - added tests and docs for this feature
423 - improved &get_package_symbol
424 - &version and &superclasses now use it
425 - methods are now blessed into Class::MOP::Method
427 - added methods to install CLOS-style method modifiers
428 - &add_before_method_modifier
429 - &add_after_method_modifier
430 - &add_around_method_modifier
431 - added tests and docs for these
432 - added &find_next_method_by_name which finds the
433 equivalent of SUPER::method_name
435 0.12 Thurs. Feb 23, 2006
436 - reduced the dependency on B, no need to always
440 - added docs to the C3 method dispatch order test
441 - fixed missing Algorithm::C3 dependency by making
442 the test skip if it is not installed
444 0.11 Mon Feb. 20, 2006
446 - added example of changing method dispatch order to C3
449 - changed how clone_instance behaves, it now only does a
450 shallow clone (see docs for more details)
451 - added docs and tests
453 0.10 Tues Feb. 14, 2006
454 ** This release was mostly about writing more tests and
455 cleaning out old and dusty code, the MOP should now
456 be considered "ready to use".
458 - adding more tests to get coverage up a little higher,
459 mostly testing errors and edge cases.
460 - test coverage is now at 99%
463 - no longer optionally exports to UNIVERSAL::meta or
464 creates a custom metaclass generator, use the
465 metaclass pragma instead.
468 - fixed a number of minor issues which came up in the
469 error/edge-case tests
471 * Class::MOP::Attribute
472 - fixed a number of minor issues which came up in the
473 error/edge-case tests
476 - fixing the AttributesWithHistory example, it was broken.
478 0.06 Thurs Feb. 9, 2006
480 - adding new metaclass pragma to make setting up the
481 metaclass a little more straightforward
484 - clean up bootstrapping to include more complete
485 attribute definitions for Class::MOP::Class and
486 Class::MOP::Attribute (accessors, readers, writers,
487 etc.) ... it is redundant, but is useful meta-info
491 - fixing minor meta-circularity issue with &meta, it
492 is now more useful for subclasses
493 - added &get_attribute_map as an accessor for the
494 hash of attribute meta objects
495 - &compute_all_applicable_attributes now just returns
496 the attribute meta-object, rather than the HASH ref
497 since all the same info can be gotten from the
498 attribute meta-object itself
499 - updated docs & tests to reflect
500 - added &clone_instance method which does a deep clone
501 of the instance structure created by &construct_instance
502 - added docs & tests for this
503 - added Clone as a dependency
504 - added &new_object and &clone_object convience methods to
505 return blessed new or cloned instances
506 - they handle Class::MOP::Class singletons correctly too
507 - added docs & tests for this
508 - cleaned up the &constuct_class_instance so that it behaves
509 more like &construct_instance (and managed the singletons too)
510 - added the &check_metaclass_compatibility method to make sure
511 that metaclasses are upward and downward compatible.
512 - added tests and docs for this
515 - adjusting code to use the &Class::MOP::Class::meta
517 - adjusting code to use the metaclass pragma
519 0.05 Sat Feb. 4, 2006
521 - added the &attribute_metaclass and &method_metaclass
522 attributes which contain a metaclass name to use for
523 attributes/methods respectively
526 - bootstrap additional attributes for Class::MOP::Class
529 - adjusted the example code and tests to use the new
530 &attribute_metaclass feature of Class::MOP::Class
534 0.04 Fri Feb. 3, 2006
536 - some documentation suggestions from #perl6
538 * Class::MOP::Attribute
539 - improved error messages
542 - added new examples:
543 - AttributesWithHistory
544 - ClassEncapsultedAttributes
546 0.03 Fri Feb. 3, 2006
547 - converted to Module::Build instead of EU::MM
549 * Class::MOP::Attribute
550 - refactored method generation code
551 - attributes are now associated with class directly
554 - refactored the InsideOut example to take advantage
555 of the Class::MOP::Attribute refactoring
556 - changed example files to .pod files and hide thier
557 package names from PAUSE (I don't want to own these
558 namespaces really, they are just examples)
560 0.02 Thurs Feb. 2, 2006
561 - moving examples from t/lib/* to examples/*
562 - adding POD documentation to the examples
564 0.01 Thurs Feb. 2, 2006