1 Revision history for Perl extension Class-MOP.
4 - optimise metaclass-already-exists check in construct_class_instance
5 - duplicate check into initialize to save a call through
8 * Class::MOP::Method::Accessor
9 - made this a subclass of Class::MOP::Method::Generated
10 - removed the relevant attributes
12 * Class::MOP::Method::Constructor
13 - fixed the cached values we had to be more sane
14 - made this a subclass of Class::MOP::Method::Generated
15 - fixed generated constructor so it properly handles
17 - added tests for this
18 - added the option to allow for both inlined and
19 non-inlined constructors.
21 * Class::MOP::Method::Generated
22 - added this class as an abstract base for the
23 Class::MOP::Method::{Constructor,Accessor} classes
24 - added tests for this
26 0.42 Mon. July 16, 2007
27 !!! Horray for mst, he fixed it !!!
30 - alter symbol table handling to deal with 5.8.x and 5.9.x
33 - Get rid of the crappy workaround from 0.40/41
35 0.41 Sun. July 15, 2007
37 Arghh!!! My TODO test didn't work, so I handle
38 it manually now so that people can use this
39 with 5.9.5/bleadperl without issue.
41 0.40 Tues, July 3, 2007
43 ~ marked a test in 003_methods.t as TODO
44 for perl 5.9.5 (this test is irrelvant to
45 the module functioning on 5.9.5 for the most
48 0.39 Mon. June 18, 2007
49 * Class::MOP::Immutable
50 - added make_metaclass_mutable + docs (groditi)
51 - removed unused variable
52 - added create_immutable_transformer
53 necessary for sane overloading of immutable behavior
54 - tests for this (groditi)
57 - Immutability can now be undone,
58 added make_mutable + tests + docs (groditi)
59 - Massive changes to the way Immutable is done
60 for details see comments next to make_immutable
61 This fixes a bug where custom metaclasses broke
62 when made immutable. We are now keeping one immutable
63 metaclass instance per metaclass instead of just one
64 to prevent isa hierarchy corruption. Memory use will go
65 up, but I suspect it will be neglible.
66 - New tests added for this behavior. (groditi)
68 0.38 Thurs. May 31, 2007
69 ~~ More documentation updates ~~
72 - we now deal with stub methods properly
73 - added tests for this
74 - fixed some tests failing on 5.9.5 (thanks blblack)
76 * Class::MOP::Attribute
77 - added get_read_method and get_write_method
78 thanks to groditi for this code, tests
80 - added tests and POD for this
83 - fixed RT issue #27329, clone object now
84 handles undef values correctly.
85 - added tests for this
86 - Corrected anon-class handling so that they
87 will not get reaped when instances still
88 exist which need to reference them. This is
89 the correct behavior, hopefully this is an
90 obscure enough feature that there are not too
91 many work arounds out in the wild.
92 - added tests for this by groditi
93 - updated docs to explain this
96 - load custom metaclasses automatically (thanks groditi)
97 - added tests for this behavior
99 0.37 Sat. March 10, 2007
100 ~~ Many, many documentation updates ~~
103 - added &load_class and &is_class_loaded
104 - added tests and docs for these
106 * Class::MOP::Attribute
107 - default now checks the instance with defined to
108 avoid setting off bool-overloads (found by Carl Franks)
112 - bad name in a test, causing meaningless failuress.
118 - All attribute names are now consistent and follow Perl 6
119 style (prefixed with the sigil, and ! as the twigil for
120 private attrs). This should not affect any code, unless
121 you broke encapsulation, in which case, it is your problem
124 !! Class::MOP::Class::Immutable has been removed
126 * Class::MOP::Method::Constructor
127 - this has been moved out of Class::MOP::Class::Immutable
128 and is a proper subclass of Class::MOP::Method now.
131 - this module now uses Class::MOP::Immutable for the
132 immutable transformation instead of
133 Class::MOP::Class::Immutable.
135 + Class::MOP::Immutable
136 - this module now controls the transformation from a mutable
137 to an immutable version of the class. Docs for this will
138 be coming eventually.
141 0.36 Sun. Nov. 5, 2006
143 - added a few 'no warnings' lines to keep annoying
144 (and meaningless) warnings from chirping during
148 - some more bootstrapping is now done on the new
151 * Class::MOP::Class::Immutable
153 - constructor generation is now handled by
154 the Class::MOP::Method::Constructor class
156 * Class::MOP::Method::Constructor
157 - created this to handle constructor generation
158 in Class::MOP::Class::Immutable
160 * Class::MOP::Attribute
162 - attributes now delegate to the
163 Class::MOP::Method::Accessor to generate
166 * Class::MOP::Method::Accessor
167 - all accessor generation functions from
168 Class::MOP::Attribute have been moved here
170 0.35 Sat. Sept. 30, 2006
172 * scripts/class_browser.pl
173 - initial prototype of a class browser, more
174 on this to come. Comments and patches are
178 - All Class::MOP::* accessors are no longer
179 re-generated in the bootstrap, instead
180 they are aliased from the originals
181 - fixed tests to reflect
182 - added Class::MOP::Method (and its subclasses)
184 - adjusted tests for this
185 - added the Class::MOP::Instance attributes
190 - methods are no longer blessed CODE refs
191 but are actual objects which can be CODE-ified
192 - adjusted tests to compensate
193 - adjusted docs for this
196 - changed how methods are dealt with to
197 encapsulate most of the work into the
198 &get_method_map method
199 - made several adjustments for the change
200 in Class::MOP::Method
201 - &add_attribute now checks if you are adding
202 a duplicate name, and properly removes the
203 old one before installing the new one
204 - added tests for this
205 - adjusted docs for this
207 * Class::MOP::Class::Immutable
208 - added caching of &get_method_map
209 - fixed issue with &get_package_symbol
210 - cleaned up the methods that die (patch by David Wheeler)
212 * Class::MOP::Package
213 - added filtering capabilities to
214 &list_all_package_symbols
216 0.34 Sat. Aug. 26, 2006
218 - added the %:methods attribute, which like
219 the $:version and such just actually goes
220 to the symbol table to get it's stuff.
221 However, it makes the MOP more complete.
223 - The &create method now requires that all
224 but the package name now is passed in as
225 named parameters. See docs for more info.
226 - updated docs and tests for this
229 - added &dump method to easily Data::Dumper
233 - cleaned up the initialization of attributes
234 which do not store things in the instance
235 - added the %:methods attribute definition to
238 ~ lots of misc. test cleanup
240 0.33 Sat. Aug. 19, 2006
242 - moved the metaclass cache out of here
243 and it is now in Class::MOP itself.
246 - moved all the metaclass cache stuff here
247 - fixed all tests for this
249 * Class::MOP::Attribute
250 - reference values (other than CODE refs)
251 are no longer allowed for defaults
252 - added tests for this
254 * Class::MOP::Package
255 - fixed an issue with perl 5.8.1 and how it deals
256 with symbol tables. The namespace hash is now
257 always reloaded from the symbol table.
259 ~ lots of misc. documentation cleanup
261 0.32 Sat. Aug. 12, 2006
262 + added Class::MOP::Object so that the
263 metamodel is more complete (and closer
264 to what Perl 6 will probably be).
266 * Class::MOP::Package
267 - refactored entire class, this is now
268 the primary gateway between the metaclass
269 and the Perl 5 symbol table
270 - added many tests for this
271 - this class is now a subclass of
273 - added some tests to reflect this
276 - refactored all symbol table access to
277 use Class::MOP::Package methods instead
280 - adding the $:version attribute in the bootstrap
281 so that Module has a version as an attribute
282 - see comment in Class::MOP for details
283 - added the $:authority attribute to this module
284 as well as an &identifier method, to bring us
285 ever closer to Perl 6 goodness
286 - I have added $AUTHORITY to all the modules
287 - added tests for this
289 * Class::MOP::Instance
290 - added &deinitialize_slot for removing slots
292 - added tests for this
294 * Class::MOP::Attribute
295 - added support for &deinitialize_slot for removing
296 slots from an instance
297 - added tests for this
299 0.31 Sat. July 15, 2006
302 - added &find_method_by_name to locate a method
303 anywhere within the class hierarchy
305 * Class::MOP::Attribute
306 - added &set_value and &get_value for getting
307 the value of the attribute for a particular
310 0.30 Wed. July 5, 2006
311 ---------------------------------------
312 This is the first version of Class::MOP
313 to introduce the immutable features which
314 will be used for optimizating the MOP.
315 This support should still be considered
316 experimental, but moving towards stability.
317 ---------------------------------------
319 * Created Class::MOP::Class::Immutable
321 * Created the Class::MOP::Package and
322 Class::MOP::Module classes to more
323 closely conform to Perl 6's meta-model
326 - now inherits from Class::MOP::Module
327 - several methods moved to ::Module and
328 ::Package and now inherited
329 - added tests for this
331 * Class::MOP::Instance
332 - added an is_inlinable method to allow other
333 classes to check before they attempt to optimize.
334 - added an inline_create_instance to inline
335 instance creation (of course)
338 - the Class::MOP::Class::*_package_variable
339 methods are all now methods of Class::MOP::Package
340 and called *_package_symbol instead. This is
341 because they are now more general purpose symbol
342 table manipulation methods.
344 0.29_02 Thurs. June 22, 2006
345 ++ DEVELOPER RELEASE ++
347 - small change in &create so that it behaves
348 properly when inherited
349 - small fix to &clone_instance
351 0.29_01 Fri. May 12, 2006
352 ++ DEVELOPER RELEASE ++
353 - This release works in combination with
354 Moose 0.09_01, it is a developer release
355 because it introduces a new instance
356 sub-protocol and has not yet been
360 - anon-classes are now properly garbage collected
361 - added tests for this
362 - improved method modifier wrapping
364 * Class::MOP::Instance
365 - added new instance protocol
366 - added tests for this
367 - changed all relevant modules and examples
369 - Class::MOP::Attribute
373 - you no longer need to specify the metaclass
374 itself, if it is not there, Class::MOP::Class
376 - updated tests for this
379 - added ArrayBasedStorage example to show
380 instance storage using ARRAY refs instead of
382 - added tests for this
383 - InsideOutClass is totally revised using the
384 new instance protocol
385 - added more tests for this
387 0.26 Mon. April 24, 2006
389 - added find_attribute_by_name method
390 - added tests and docs for this
391 - some small optimizations
393 * Class::MOP::Attribute
394 - some small optimizations
396 0.25 Thurs. April 20, 2006
398 - added create_anon_class for creating anonymous classes
399 - added tests for this
400 - added get_all_metaclasses, get_all_metaclass_names
401 and get_all_metaclass_instances method to allow
402 access to all the cached metaclass objects.
403 - attribute slot initialization is now the responsibility
404 of the attribute itself, and construct_instance now
405 delegates appropriately
407 * Class::MOP::Attribute
408 - attribute slot initialization is now the responsibility
409 of the attribute itself, so we added a method for it
410 called initialize_instance_slot
413 - adjusted all the examples to use the new attribute
414 initialize_instance_slot method
416 0.24 Tues. April 11, 2006
418 - cleaned up how the before/after/around method
419 modifiers get named with Sub::Name
421 0.23 Thurs. March 30, 2006
423 - fixed the way attribute defaults are handled
424 during instance construction (bug found by chansen)
426 * Class::MOP::Attribute
427 - read-only accessors ('reader') will now die if
428 passed more than one argument (attempting to write
430 - added tests for this
431 - adjusted all /example files to comply
433 0.22 Mon. March 20, 2006
435 - localized $@ in the *_package_variable functions
436 because otherwise, it does ugly things in Moose.
437 - added test case for this
439 0.21 Wed. March 15, 2006
441 - fixed issue where metaclasses are reaped from
442 our cache in global destruction, and so are not
443 available in DESTORY calls
445 0.20 Thurs. March 2, 2006
446 - removed the dependency for Clone since
447 we no longer to deep-cloning by default.
450 - added &package_name, &name and
451 &fully_qualified_name methods, some of
452 which were formerly private subs in
455 * Class::MOP::Method::Wrapped
456 - allows for a method to be wrapped with
457 before, after and around modifiers
458 - added tests and docs for this feature
461 - improved &get_package_symbol
462 - &version and &superclasses now use it
463 - methods are now blessed into Class::MOP::Method
465 - added methods to install CLOS-style method modifiers
466 - &add_before_method_modifier
467 - &add_after_method_modifier
468 - &add_around_method_modifier
469 - added tests and docs for these
470 - added &find_next_method_by_name which finds the
471 equivalent of SUPER::method_name
473 0.12 Thurs. Feb 23, 2006
474 - reduced the dependency on B, no need to always
478 - added docs to the C3 method dispatch order test
479 - fixed missing Algorithm::C3 dependency by making
480 the test skip if it is not installed
482 0.11 Mon Feb. 20, 2006
484 - added example of changing method dispatch order to C3
487 - changed how clone_instance behaves, it now only does a
488 shallow clone (see docs for more details)
489 - added docs and tests
491 0.10 Tues Feb. 14, 2006
492 ** This release was mostly about writing more tests and
493 cleaning out old and dusty code, the MOP should now
494 be considered "ready to use".
496 - adding more tests to get coverage up a little higher,
497 mostly testing errors and edge cases.
498 - test coverage is now at 99%
501 - no longer optionally exports to UNIVERSAL::meta or
502 creates a custom metaclass generator, use the
503 metaclass pragma instead.
506 - fixed a number of minor issues which came up in the
507 error/edge-case tests
509 * Class::MOP::Attribute
510 - fixed a number of minor issues which came up in the
511 error/edge-case tests
514 - fixing the AttributesWithHistory example, it was broken.
516 0.06 Thurs Feb. 9, 2006
518 - adding new metaclass pragma to make setting up the
519 metaclass a little more straightforward
522 - clean up bootstrapping to include more complete
523 attribute definitions for Class::MOP::Class and
524 Class::MOP::Attribute (accessors, readers, writers,
525 etc.) ... it is redundant, but is useful meta-info
529 - fixing minor meta-circularity issue with &meta, it
530 is now more useful for subclasses
531 - added &get_attribute_map as an accessor for the
532 hash of attribute meta objects
533 - &compute_all_applicable_attributes now just returns
534 the attribute meta-object, rather than the HASH ref
535 since all the same info can be gotten from the
536 attribute meta-object itself
537 - updated docs & tests to reflect
538 - added &clone_instance method which does a deep clone
539 of the instance structure created by &construct_instance
540 - added docs & tests for this
541 - added Clone as a dependency
542 - added &new_object and &clone_object convience methods to
543 return blessed new or cloned instances
544 - they handle Class::MOP::Class singletons correctly too
545 - added docs & tests for this
546 - cleaned up the &constuct_class_instance so that it behaves
547 more like &construct_instance (and managed the singletons too)
548 - added the &check_metaclass_compatibility method to make sure
549 that metaclasses are upward and downward compatible.
550 - added tests and docs for this
553 - adjusting code to use the &Class::MOP::Class::meta
555 - adjusting code to use the metaclass pragma
557 0.05 Sat Feb. 4, 2006
559 - added the &attribute_metaclass and &method_metaclass
560 attributes which contain a metaclass name to use for
561 attributes/methods respectively
564 - bootstrap additional attributes for Class::MOP::Class
567 - adjusted the example code and tests to use the new
568 &attribute_metaclass feature of Class::MOP::Class
572 0.04 Fri Feb. 3, 2006
574 - some documentation suggestions from #perl6
576 * Class::MOP::Attribute
577 - improved error messages
580 - added new examples:
581 - AttributesWithHistory
582 - ClassEncapsultedAttributes
584 0.03 Fri Feb. 3, 2006
585 - converted to Module::Build instead of EU::MM
587 * Class::MOP::Attribute
588 - refactored method generation code
589 - attributes are now associated with class directly
592 - refactored the InsideOut example to take advantage
593 of the Class::MOP::Attribute refactoring
594 - changed example files to .pod files and hide thier
595 package names from PAUSE (I don't want to own these
596 namespaces really, they are just examples)
598 0.02 Thurs Feb. 2, 2006
599 - moving examples from t/lib/* to examples/*
600 - adding POD documentation to the examples
602 0.01 Thurs Feb. 2, 2006