1 Revision history for Perl extension Class-MOP.
6 - All attribute names are now consistent and follow Perl 6
7 style (prefixed with the sigil, and ! as the twigil for
8 private attrs). This should not affect any code, unless
9 you broke encapsulation, in which case, it is your problem
12 !! Class::MOP::Class::Immutable has been removed
14 * Class::MOP::Method::Constructor
15 - this has been moved out of Class::MOP::Class::Immutable
16 and is a proper subclass of Class::MOP::Method now.
19 - this module now uses Class::MOP::Immutable for the
20 immutable transformation instead of
21 Class::MOP::Class::Immutable.
23 + Class::MOP::Immutable
24 - this module now controls the transformation from a mutable
25 to an immutable version of the class. Docs for this will
29 0.36 Sun. Nov. 5, 2006
31 - added a few 'no warnings' lines to keep annoying
32 (and meaningless) warnings from chirping during
36 - some more bootstrapping is now done on the new
39 * Class::MOP::Class::Immutable
41 - constructor generation is now handled by
42 the Class::MOP::Method::Constructor class
44 * Class::MOP::Method::Constructor
45 - created this to handle constructor generation
46 in Class::MOP::Class::Immutable
48 * Class::MOP::Attribute
50 - attributes now delegate to the
51 Class::MOP::Method::Accessor to generate
54 * Class::MOP::Method::Accessor
55 - all accessor generation functions from
56 Class::MOP::Attribute have been moved here
58 0.35 Sat. Sept. 30, 2006
60 * scripts/class_browser.pl
61 - initial prototype of a class browser, more
62 on this to come. Comments and patches are
66 - All Class::MOP::* accessors are no longer
67 re-generated in the bootstrap, instead
68 they are aliased from the originals
69 - fixed tests to reflect
70 - added Class::MOP::Method (and its subclasses)
72 - adjusted tests for this
73 - added the Class::MOP::Instance attributes
78 - methods are no longer blessed CODE refs
79 but are actual objects which can be CODE-ified
80 - adjusted tests to compensate
81 - adjusted docs for this
84 - changed how methods are dealt with to
85 encapsulate most of the work into the
86 &get_method_map method
87 - made several adjustments for the change
89 - &add_attribute now checks if you are adding
90 a duplicate name, and properly removes the
91 old one before installing the new one
92 - added tests for this
93 - adjusted docs for this
95 * Class::MOP::Class::Immutable
96 - added caching of &get_method_map
97 - fixed issue with &get_package_symbol
98 - cleaned up the methods that die (patch by David Wheeler)
100 * Class::MOP::Package
101 - added filtering capabilities to
102 &list_all_package_symbols
104 0.34 Sat. Aug. 26, 2006
106 - added the %:methods attribute, which like
107 the $:version and such just actually goes
108 to the symbol table to get it's stuff.
109 However, it makes the MOP more complete.
111 - The &create method now requires that all
112 but the package name now is passed in as
113 named parameters. See docs for more info.
114 - updated docs and tests for this
117 - added &dump method to easily Data::Dumper
121 - cleaned up the initialization of attributes
122 which do not store things in the instance
123 - added the %:methods attribute definition to
126 ~ lots of misc. test cleanup
128 0.33 Sat. Aug. 19, 2006
130 - moved the metaclass cache out of here
131 and it is now in Class::MOP itself.
134 - moved all the metaclass cache stuff here
135 - fixed all tests for this
137 * Class::MOP::Attribute
138 - reference values (other than CODE refs)
139 are no longer allowed for defaults
140 - added tests for this
142 * Class::MOP::Package
143 - fixed an issue with perl 5.8.1 and how it deals
144 with symbol tables. The namespace hash is now
145 always reloaded from the symbol table.
147 ~ lots of misc. documentation cleanup
149 0.32 Sat. Aug. 12, 2006
150 + added Class::MOP::Object so that the
151 metamodel is more complete (and closer
152 to what Perl 6 will probably be).
154 * Class::MOP::Package
155 - refactored entire class, this is now
156 the primary gateway between the metaclass
157 and the Perl 5 symbol table
158 - added many tests for this
159 - this class is now a subclass of
161 - added some tests to reflect this
164 - refactored all symbol table access to
165 use Class::MOP::Package methods instead
168 - adding the $:version attribute in the bootstrap
169 so that Module has a version as an attribute
170 - see comment in Class::MOP for details
171 - added the $:authority attribute to this module
172 as well as an &identifier method, to bring us
173 ever closer to Perl 6 goodness
174 - I have added $AUTHORITY to all the modules
175 - added tests for this
177 * Class::MOP::Instance
178 - added &deinitialize_slot for removing slots
180 - added tests for this
182 * Class::MOP::Attribute
183 - added support for &deinitialize_slot for removing
184 slots from an instance
185 - added tests for this
187 0.31 Sat. July 15, 2006
190 - added &find_method_by_name to locate a method
191 anywhere within the class hierarchy
193 * Class::MOP::Attribute
194 - added &set_value and &get_value for getting
195 the value of the attribute for a particular
198 0.30 Wed. July 5, 2006
199 ---------------------------------------
200 This is the first version of Class::MOP
201 to introduce the immutable features which
202 will be used for optimizating the MOP.
203 This support should still be considered
204 experimental, but moving towards stability.
205 ---------------------------------------
207 * Created Class::MOP::Class::Immutable
209 * Created the Class::MOP::Package and
210 Class::MOP::Module classes to more
211 closely conform to Perl 6's meta-model
214 - now inherits from Class::MOP::Module
215 - several methods moved to ::Module and
216 ::Package and now inherited
217 - added tests for this
219 * Class::MOP::Instance
220 - added an is_inlinable method to allow other
221 classes to check before they attempt to optimize.
222 - added an inline_create_instance to inline
223 instance creation (of course)
226 - the Class::MOP::Class::*_package_variable
227 methods are all now methods of Class::MOP::Package
228 and called *_package_symbol instead. This is
229 because they are now more general purpose symbol
230 table manipulation methods.
232 0.29_02 Thurs. June 22, 2006
233 ++ DEVELOPER RELEASE ++
235 - small change in &create so that it behaves
236 properly when inherited
237 - small fix to &clone_instance
239 0.29_01 Fri. May 12, 2006
240 ++ DEVELOPER RELEASE ++
241 - This release works in combination with
242 Moose 0.09_01, it is a developer release
243 because it introduces a new instance
244 sub-protocol and has not yet been
248 - anon-classes are now properly garbage collected
249 - added tests for this
250 - improved method modifier wrapping
252 * Class::MOP::Instance
253 - added new instance protocol
254 - added tests for this
255 - changed all relevant modules and examples
257 - Class::MOP::Attribute
261 - you no longer need to specify the metaclass
262 itself, if it is not there, Class::MOP::Class
264 - updated tests for this
267 - added ArrayBasedStorage example to show
268 instance storage using ARRAY refs instead of
270 - added tests for this
271 - InsideOutClass is totally revised using the
272 new instance protocol
273 - added more tests for this
275 0.26 Mon. April 24, 2006
277 - added find_attribute_by_name method
278 - added tests and docs for this
279 - some small optimizations
281 * Class::MOP::Attribute
282 - some small optimizations
284 0.25 Thurs. April 20, 2006
286 - added create_anon_class for creating anonymous classes
287 - added tests for this
288 - added get_all_metaclasses, get_all_metaclass_names
289 and get_all_metaclass_instances method to allow
290 access to all the cached metaclass objects.
291 - attribute slot initialization is now the responsibility
292 of the attribute itself, and construct_instance now
293 delegates appropriately
295 * Class::MOP::Attribute
296 - attribute slot initialization is now the responsibility
297 of the attribute itself, so we added a method for it
298 called initialize_instance_slot
301 - adjusted all the examples to use the new attribute
302 initialize_instance_slot method
304 0.24 Tues. April 11, 2006
306 - cleaned up how the before/after/around method
307 modifiers get named with Sub::Name
309 0.23 Thurs. March 30, 2006
311 - fixed the way attribute defaults are handled
312 during instance construction (bug found by chansen)
314 * Class::MOP::Attribute
315 - read-only accessors ('reader') will now die if
316 passed more than one argument (attempting to write
318 - added tests for this
319 - adjusted all /example files to comply
321 0.22 Mon. March 20, 2006
323 - localized $@ in the *_package_variable functions
324 because otherwise, it does ugly things in Moose.
325 - added test case for this
327 0.21 Wed. March 15, 2006
329 - fixed issue where metaclasses are reaped from
330 our cache in global destruction, and so are not
331 available in DESTORY calls
333 0.20 Thurs. March 2, 2006
334 - removed the dependency for Clone since
335 we no longer to deep-cloning by default.
338 - added &package_name, &name and
339 &fully_qualified_name methods, some of
340 which were formerly private subs in
343 * Class::MOP::Method::Wrapped
344 - allows for a method to be wrapped with
345 before, after and around modifiers
346 - added tests and docs for this feature
349 - improved &get_package_symbol
350 - &version and &superclasses now use it
351 - methods are now blessed into Class::MOP::Method
353 - added methods to install CLOS-style method modifiers
354 - &add_before_method_modifier
355 - &add_after_method_modifier
356 - &add_around_method_modifier
357 - added tests and docs for these
358 - added &find_next_method_by_name which finds the
359 equivalent of SUPER::method_name
361 0.12 Thurs. Feb 23, 2006
362 - reduced the dependency on B, no need to always
366 - added docs to the C3 method dispatch order test
367 - fixed missing Algorithm::C3 dependency by making
368 the test skip if it is not installed
370 0.11 Mon Feb. 20, 2006
372 - added example of changing method dispatch order to C3
375 - changed how clone_instance behaves, it now only does a
376 shallow clone (see docs for more details)
377 - added docs and tests
379 0.10 Tues Feb. 14, 2006
380 ** This release was mostly about writing more tests and
381 cleaning out old and dusty code, the MOP should now
382 be considered "ready to use".
384 - adding more tests to get coverage up a little higher,
385 mostly testing errors and edge cases.
386 - test coverage is now at 99%
389 - no longer optionally exports to UNIVERSAL::meta or
390 creates a custom metaclass generator, use the
391 metaclass pragma instead.
394 - fixed a number of minor issues which came up in the
395 error/edge-case tests
397 * Class::MOP::Attribute
398 - fixed a number of minor issues which came up in the
399 error/edge-case tests
402 - fixing the AttributesWithHistory example, it was broken.
404 0.06 Thurs Feb. 9, 2006
406 - adding new metaclass pragma to make setting up the
407 metaclass a little more straightforward
410 - clean up bootstrapping to include more complete
411 attribute definitions for Class::MOP::Class and
412 Class::MOP::Attribute (accessors, readers, writers,
413 etc.) ... it is redundant, but is useful meta-info
417 - fixing minor meta-circularity issue with &meta, it
418 is now more useful for subclasses
419 - added &get_attribute_map as an accessor for the
420 hash of attribute meta objects
421 - &compute_all_applicable_attributes now just returns
422 the attribute meta-object, rather than the HASH ref
423 since all the same info can be gotten from the
424 attribute meta-object itself
425 - updated docs & tests to reflect
426 - added &clone_instance method which does a deep clone
427 of the instance structure created by &construct_instance
428 - added docs & tests for this
429 - added Clone as a dependency
430 - added &new_object and &clone_object convience methods to
431 return blessed new or cloned instances
432 - they handle Class::MOP::Class singletons correctly too
433 - added docs & tests for this
434 - cleaned up the &constuct_class_instance so that it behaves
435 more like &construct_instance (and managed the singletons too)
436 - added the &check_metaclass_compatibility method to make sure
437 that metaclasses are upward and downward compatible.
438 - added tests and docs for this
441 - adjusting code to use the &Class::MOP::Class::meta
443 - adjusting code to use the metaclass pragma
445 0.05 Sat Feb. 4, 2006
447 - added the &attribute_metaclass and &method_metaclass
448 attributes which contain a metaclass name to use for
449 attributes/methods respectively
452 - bootstrap additional attributes for Class::MOP::Class
455 - adjusted the example code and tests to use the new
456 &attribute_metaclass feature of Class::MOP::Class
460 0.04 Fri Feb. 3, 2006
462 - some documentation suggestions from #perl6
464 * Class::MOP::Attribute
465 - improved error messages
468 - added new examples:
469 - AttributesWithHistory
470 - ClassEncapsultedAttributes
472 0.03 Fri Feb. 3, 2006
473 - converted to Module::Build instead of EU::MM
475 * Class::MOP::Attribute
476 - refactored method generation code
477 - attributes are now associated with class directly
480 - refactored the InsideOut example to take advantage
481 of the Class::MOP::Attribute refactoring
482 - changed example files to .pod files and hide thier
483 package names from PAUSE (I don't want to own these
484 namespaces really, they are just examples)
486 0.02 Thurs Feb. 2, 2006
487 - moving examples from t/lib/* to examples/*
488 - adding POD documentation to the examples
490 0.01 Thurs Feb. 2, 2006