1 Revision history for Perl extension Class-MOP.
4 ~~ More documentation updates ~~
7 - we now deal with stub methods properly
9 - fixed some tests failing on 5.9.5
11 * Class::MOP::Attribute
12 - added get_read_method and get_write_method
13 thanks to groditi for this code, tests
15 - added tests and POD for this
18 - fixed RT issue #27329, clone object now
19 handles undef values correctly.
20 - added tests for this
21 - Corrected anon-class handling so that they
22 will not get reaped when instances still
23 exist which need to reference them. This is
24 the correct behavior, hopefully this is an
25 obscure enough feature that there are not too
26 many work arounds out in the wild.
27 - added tests for this by groditi
28 - updated docs to explain this
30 0.37 Sat. March 10, 2007
31 ~~ Many, many documentation updates ~~
34 - added &load_class and &is_class_loaded
35 - added tests and docs for these
37 * Class::MOP::Attribute
38 - default now checks the instance with defined to
39 avoid setting off bool-overloads (found by Carl Franks)
43 - bad name in a test, causing meaningless failuress.
49 - All attribute names are now consistent and follow Perl 6
50 style (prefixed with the sigil, and ! as the twigil for
51 private attrs). This should not affect any code, unless
52 you broke encapsulation, in which case, it is your problem
55 !! Class::MOP::Class::Immutable has been removed
57 * Class::MOP::Method::Constructor
58 - this has been moved out of Class::MOP::Class::Immutable
59 and is a proper subclass of Class::MOP::Method now.
62 - this module now uses Class::MOP::Immutable for the
63 immutable transformation instead of
64 Class::MOP::Class::Immutable.
66 + Class::MOP::Immutable
67 - this module now controls the transformation from a mutable
68 to an immutable version of the class. Docs for this will
72 0.36 Sun. Nov. 5, 2006
74 - added a few 'no warnings' lines to keep annoying
75 (and meaningless) warnings from chirping during
79 - some more bootstrapping is now done on the new
82 * Class::MOP::Class::Immutable
84 - constructor generation is now handled by
85 the Class::MOP::Method::Constructor class
87 * Class::MOP::Method::Constructor
88 - created this to handle constructor generation
89 in Class::MOP::Class::Immutable
91 * Class::MOP::Attribute
93 - attributes now delegate to the
94 Class::MOP::Method::Accessor to generate
97 * Class::MOP::Method::Accessor
98 - all accessor generation functions from
99 Class::MOP::Attribute have been moved here
101 0.35 Sat. Sept. 30, 2006
103 * scripts/class_browser.pl
104 - initial prototype of a class browser, more
105 on this to come. Comments and patches are
109 - All Class::MOP::* accessors are no longer
110 re-generated in the bootstrap, instead
111 they are aliased from the originals
112 - fixed tests to reflect
113 - added Class::MOP::Method (and its subclasses)
115 - adjusted tests for this
116 - added the Class::MOP::Instance attributes
121 - methods are no longer blessed CODE refs
122 but are actual objects which can be CODE-ified
123 - adjusted tests to compensate
124 - adjusted docs for this
127 - changed how methods are dealt with to
128 encapsulate most of the work into the
129 &get_method_map method
130 - made several adjustments for the change
131 in Class::MOP::Method
132 - &add_attribute now checks if you are adding
133 a duplicate name, and properly removes the
134 old one before installing the new one
135 - added tests for this
136 - adjusted docs for this
138 * Class::MOP::Class::Immutable
139 - added caching of &get_method_map
140 - fixed issue with &get_package_symbol
141 - cleaned up the methods that die (patch by David Wheeler)
143 * Class::MOP::Package
144 - added filtering capabilities to
145 &list_all_package_symbols
147 0.34 Sat. Aug. 26, 2006
149 - added the %:methods attribute, which like
150 the $:version and such just actually goes
151 to the symbol table to get it's stuff.
152 However, it makes the MOP more complete.
154 - The &create method now requires that all
155 but the package name now is passed in as
156 named parameters. See docs for more info.
157 - updated docs and tests for this
160 - added &dump method to easily Data::Dumper
164 - cleaned up the initialization of attributes
165 which do not store things in the instance
166 - added the %:methods attribute definition to
169 ~ lots of misc. test cleanup
171 0.33 Sat. Aug. 19, 2006
173 - moved the metaclass cache out of here
174 and it is now in Class::MOP itself.
177 - moved all the metaclass cache stuff here
178 - fixed all tests for this
180 * Class::MOP::Attribute
181 - reference values (other than CODE refs)
182 are no longer allowed for defaults
183 - added tests for this
185 * Class::MOP::Package
186 - fixed an issue with perl 5.8.1 and how it deals
187 with symbol tables. The namespace hash is now
188 always reloaded from the symbol table.
190 ~ lots of misc. documentation cleanup
192 0.32 Sat. Aug. 12, 2006
193 + added Class::MOP::Object so that the
194 metamodel is more complete (and closer
195 to what Perl 6 will probably be).
197 * Class::MOP::Package
198 - refactored entire class, this is now
199 the primary gateway between the metaclass
200 and the Perl 5 symbol table
201 - added many tests for this
202 - this class is now a subclass of
204 - added some tests to reflect this
207 - refactored all symbol table access to
208 use Class::MOP::Package methods instead
211 - adding the $:version attribute in the bootstrap
212 so that Module has a version as an attribute
213 - see comment in Class::MOP for details
214 - added the $:authority attribute to this module
215 as well as an &identifier method, to bring us
216 ever closer to Perl 6 goodness
217 - I have added $AUTHORITY to all the modules
218 - added tests for this
220 * Class::MOP::Instance
221 - added &deinitialize_slot for removing slots
223 - added tests for this
225 * Class::MOP::Attribute
226 - added support for &deinitialize_slot for removing
227 slots from an instance
228 - added tests for this
230 0.31 Sat. July 15, 2006
233 - added &find_method_by_name to locate a method
234 anywhere within the class hierarchy
236 * Class::MOP::Attribute
237 - added &set_value and &get_value for getting
238 the value of the attribute for a particular
241 0.30 Wed. July 5, 2006
242 ---------------------------------------
243 This is the first version of Class::MOP
244 to introduce the immutable features which
245 will be used for optimizating the MOP.
246 This support should still be considered
247 experimental, but moving towards stability.
248 ---------------------------------------
250 * Created Class::MOP::Class::Immutable
252 * Created the Class::MOP::Package and
253 Class::MOP::Module classes to more
254 closely conform to Perl 6's meta-model
257 - now inherits from Class::MOP::Module
258 - several methods moved to ::Module and
259 ::Package and now inherited
260 - added tests for this
262 * Class::MOP::Instance
263 - added an is_inlinable method to allow other
264 classes to check before they attempt to optimize.
265 - added an inline_create_instance to inline
266 instance creation (of course)
269 - the Class::MOP::Class::*_package_variable
270 methods are all now methods of Class::MOP::Package
271 and called *_package_symbol instead. This is
272 because they are now more general purpose symbol
273 table manipulation methods.
275 0.29_02 Thurs. June 22, 2006
276 ++ DEVELOPER RELEASE ++
278 - small change in &create so that it behaves
279 properly when inherited
280 - small fix to &clone_instance
282 0.29_01 Fri. May 12, 2006
283 ++ DEVELOPER RELEASE ++
284 - This release works in combination with
285 Moose 0.09_01, it is a developer release
286 because it introduces a new instance
287 sub-protocol and has not yet been
291 - anon-classes are now properly garbage collected
292 - added tests for this
293 - improved method modifier wrapping
295 * Class::MOP::Instance
296 - added new instance protocol
297 - added tests for this
298 - changed all relevant modules and examples
300 - Class::MOP::Attribute
304 - you no longer need to specify the metaclass
305 itself, if it is not there, Class::MOP::Class
307 - updated tests for this
310 - added ArrayBasedStorage example to show
311 instance storage using ARRAY refs instead of
313 - added tests for this
314 - InsideOutClass is totally revised using the
315 new instance protocol
316 - added more tests for this
318 0.26 Mon. April 24, 2006
320 - added find_attribute_by_name method
321 - added tests and docs for this
322 - some small optimizations
324 * Class::MOP::Attribute
325 - some small optimizations
327 0.25 Thurs. April 20, 2006
329 - added create_anon_class for creating anonymous classes
330 - added tests for this
331 - added get_all_metaclasses, get_all_metaclass_names
332 and get_all_metaclass_instances method to allow
333 access to all the cached metaclass objects.
334 - attribute slot initialization is now the responsibility
335 of the attribute itself, and construct_instance now
336 delegates appropriately
338 * Class::MOP::Attribute
339 - attribute slot initialization is now the responsibility
340 of the attribute itself, so we added a method for it
341 called initialize_instance_slot
344 - adjusted all the examples to use the new attribute
345 initialize_instance_slot method
347 0.24 Tues. April 11, 2006
349 - cleaned up how the before/after/around method
350 modifiers get named with Sub::Name
352 0.23 Thurs. March 30, 2006
354 - fixed the way attribute defaults are handled
355 during instance construction (bug found by chansen)
357 * Class::MOP::Attribute
358 - read-only accessors ('reader') will now die if
359 passed more than one argument (attempting to write
361 - added tests for this
362 - adjusted all /example files to comply
364 0.22 Mon. March 20, 2006
366 - localized $@ in the *_package_variable functions
367 because otherwise, it does ugly things in Moose.
368 - added test case for this
370 0.21 Wed. March 15, 2006
372 - fixed issue where metaclasses are reaped from
373 our cache in global destruction, and so are not
374 available in DESTORY calls
376 0.20 Thurs. March 2, 2006
377 - removed the dependency for Clone since
378 we no longer to deep-cloning by default.
381 - added &package_name, &name and
382 &fully_qualified_name methods, some of
383 which were formerly private subs in
386 * Class::MOP::Method::Wrapped
387 - allows for a method to be wrapped with
388 before, after and around modifiers
389 - added tests and docs for this feature
392 - improved &get_package_symbol
393 - &version and &superclasses now use it
394 - methods are now blessed into Class::MOP::Method
396 - added methods to install CLOS-style method modifiers
397 - &add_before_method_modifier
398 - &add_after_method_modifier
399 - &add_around_method_modifier
400 - added tests and docs for these
401 - added &find_next_method_by_name which finds the
402 equivalent of SUPER::method_name
404 0.12 Thurs. Feb 23, 2006
405 - reduced the dependency on B, no need to always
409 - added docs to the C3 method dispatch order test
410 - fixed missing Algorithm::C3 dependency by making
411 the test skip if it is not installed
413 0.11 Mon Feb. 20, 2006
415 - added example of changing method dispatch order to C3
418 - changed how clone_instance behaves, it now only does a
419 shallow clone (see docs for more details)
420 - added docs and tests
422 0.10 Tues Feb. 14, 2006
423 ** This release was mostly about writing more tests and
424 cleaning out old and dusty code, the MOP should now
425 be considered "ready to use".
427 - adding more tests to get coverage up a little higher,
428 mostly testing errors and edge cases.
429 - test coverage is now at 99%
432 - no longer optionally exports to UNIVERSAL::meta or
433 creates a custom metaclass generator, use the
434 metaclass pragma instead.
437 - fixed a number of minor issues which came up in the
438 error/edge-case tests
440 * Class::MOP::Attribute
441 - fixed a number of minor issues which came up in the
442 error/edge-case tests
445 - fixing the AttributesWithHistory example, it was broken.
447 0.06 Thurs Feb. 9, 2006
449 - adding new metaclass pragma to make setting up the
450 metaclass a little more straightforward
453 - clean up bootstrapping to include more complete
454 attribute definitions for Class::MOP::Class and
455 Class::MOP::Attribute (accessors, readers, writers,
456 etc.) ... it is redundant, but is useful meta-info
460 - fixing minor meta-circularity issue with &meta, it
461 is now more useful for subclasses
462 - added &get_attribute_map as an accessor for the
463 hash of attribute meta objects
464 - &compute_all_applicable_attributes now just returns
465 the attribute meta-object, rather than the HASH ref
466 since all the same info can be gotten from the
467 attribute meta-object itself
468 - updated docs & tests to reflect
469 - added &clone_instance method which does a deep clone
470 of the instance structure created by &construct_instance
471 - added docs & tests for this
472 - added Clone as a dependency
473 - added &new_object and &clone_object convience methods to
474 return blessed new or cloned instances
475 - they handle Class::MOP::Class singletons correctly too
476 - added docs & tests for this
477 - cleaned up the &constuct_class_instance so that it behaves
478 more like &construct_instance (and managed the singletons too)
479 - added the &check_metaclass_compatibility method to make sure
480 that metaclasses are upward and downward compatible.
481 - added tests and docs for this
484 - adjusting code to use the &Class::MOP::Class::meta
486 - adjusting code to use the metaclass pragma
488 0.05 Sat Feb. 4, 2006
490 - added the &attribute_metaclass and &method_metaclass
491 attributes which contain a metaclass name to use for
492 attributes/methods respectively
495 - bootstrap additional attributes for Class::MOP::Class
498 - adjusted the example code and tests to use the new
499 &attribute_metaclass feature of Class::MOP::Class
503 0.04 Fri Feb. 3, 2006
505 - some documentation suggestions from #perl6
507 * Class::MOP::Attribute
508 - improved error messages
511 - added new examples:
512 - AttributesWithHistory
513 - ClassEncapsultedAttributes
515 0.03 Fri Feb. 3, 2006
516 - converted to Module::Build instead of EU::MM
518 * Class::MOP::Attribute
519 - refactored method generation code
520 - attributes are now associated with class directly
523 - refactored the InsideOut example to take advantage
524 of the Class::MOP::Attribute refactoring
525 - changed example files to .pod files and hide thier
526 package names from PAUSE (I don't want to own these
527 namespaces really, they are just examples)
529 0.02 Thurs Feb. 2, 2006
530 - moving examples from t/lib/* to examples/*
531 - adding POD documentation to the examples
533 0.01 Thurs Feb. 2, 2006