1 Revision history for Perl extension Class-MOP.
4 ~~ More documentation updates ~~
6 - we now deal with stub methods properly
8 * Class::MOP::Attribute
9 - added get_read_method and get_write_method
10 - added tests and POD for this
12 0.37 Sat. March 10, 2007
13 ~~ Many, many documentation updates ~~
16 - added &load_class and &is_class_loaded
17 - added tests and docs for these
19 * Class::MOP::Attribute
20 - default now checks the instance with defined to
21 avoid setting off bool-overloads (found by Carl Franks)
25 - bad name in a test, causing meaningless failuress.
31 - All attribute names are now consistent and follow Perl 6
32 style (prefixed with the sigil, and ! as the twigil for
33 private attrs). This should not affect any code, unless
34 you broke encapsulation, in which case, it is your problem
37 !! Class::MOP::Class::Immutable has been removed
39 * Class::MOP::Method::Constructor
40 - this has been moved out of Class::MOP::Class::Immutable
41 and is a proper subclass of Class::MOP::Method now.
44 - this module now uses Class::MOP::Immutable for the
45 immutable transformation instead of
46 Class::MOP::Class::Immutable.
48 + Class::MOP::Immutable
49 - this module now controls the transformation from a mutable
50 to an immutable version of the class. Docs for this will
54 0.36 Sun. Nov. 5, 2006
56 - added a few 'no warnings' lines to keep annoying
57 (and meaningless) warnings from chirping during
61 - some more bootstrapping is now done on the new
64 * Class::MOP::Class::Immutable
66 - constructor generation is now handled by
67 the Class::MOP::Method::Constructor class
69 * Class::MOP::Method::Constructor
70 - created this to handle constructor generation
71 in Class::MOP::Class::Immutable
73 * Class::MOP::Attribute
75 - attributes now delegate to the
76 Class::MOP::Method::Accessor to generate
79 * Class::MOP::Method::Accessor
80 - all accessor generation functions from
81 Class::MOP::Attribute have been moved here
83 0.35 Sat. Sept. 30, 2006
85 * scripts/class_browser.pl
86 - initial prototype of a class browser, more
87 on this to come. Comments and patches are
91 - All Class::MOP::* accessors are no longer
92 re-generated in the bootstrap, instead
93 they are aliased from the originals
94 - fixed tests to reflect
95 - added Class::MOP::Method (and its subclasses)
97 - adjusted tests for this
98 - added the Class::MOP::Instance attributes
103 - methods are no longer blessed CODE refs
104 but are actual objects which can be CODE-ified
105 - adjusted tests to compensate
106 - adjusted docs for this
109 - changed how methods are dealt with to
110 encapsulate most of the work into the
111 &get_method_map method
112 - made several adjustments for the change
113 in Class::MOP::Method
114 - &add_attribute now checks if you are adding
115 a duplicate name, and properly removes the
116 old one before installing the new one
117 - added tests for this
118 - adjusted docs for this
120 * Class::MOP::Class::Immutable
121 - added caching of &get_method_map
122 - fixed issue with &get_package_symbol
123 - cleaned up the methods that die (patch by David Wheeler)
125 * Class::MOP::Package
126 - added filtering capabilities to
127 &list_all_package_symbols
129 0.34 Sat. Aug. 26, 2006
131 - added the %:methods attribute, which like
132 the $:version and such just actually goes
133 to the symbol table to get it's stuff.
134 However, it makes the MOP more complete.
136 - The &create method now requires that all
137 but the package name now is passed in as
138 named parameters. See docs for more info.
139 - updated docs and tests for this
142 - added &dump method to easily Data::Dumper
146 - cleaned up the initialization of attributes
147 which do not store things in the instance
148 - added the %:methods attribute definition to
151 ~ lots of misc. test cleanup
153 0.33 Sat. Aug. 19, 2006
155 - moved the metaclass cache out of here
156 and it is now in Class::MOP itself.
159 - moved all the metaclass cache stuff here
160 - fixed all tests for this
162 * Class::MOP::Attribute
163 - reference values (other than CODE refs)
164 are no longer allowed for defaults
165 - added tests for this
167 * Class::MOP::Package
168 - fixed an issue with perl 5.8.1 and how it deals
169 with symbol tables. The namespace hash is now
170 always reloaded from the symbol table.
172 ~ lots of misc. documentation cleanup
174 0.32 Sat. Aug. 12, 2006
175 + added Class::MOP::Object so that the
176 metamodel is more complete (and closer
177 to what Perl 6 will probably be).
179 * Class::MOP::Package
180 - refactored entire class, this is now
181 the primary gateway between the metaclass
182 and the Perl 5 symbol table
183 - added many tests for this
184 - this class is now a subclass of
186 - added some tests to reflect this
189 - refactored all symbol table access to
190 use Class::MOP::Package methods instead
193 - adding the $:version attribute in the bootstrap
194 so that Module has a version as an attribute
195 - see comment in Class::MOP for details
196 - added the $:authority attribute to this module
197 as well as an &identifier method, to bring us
198 ever closer to Perl 6 goodness
199 - I have added $AUTHORITY to all the modules
200 - added tests for this
202 * Class::MOP::Instance
203 - added &deinitialize_slot for removing slots
205 - added tests for this
207 * Class::MOP::Attribute
208 - added support for &deinitialize_slot for removing
209 slots from an instance
210 - added tests for this
212 0.31 Sat. July 15, 2006
215 - added &find_method_by_name to locate a method
216 anywhere within the class hierarchy
218 * Class::MOP::Attribute
219 - added &set_value and &get_value for getting
220 the value of the attribute for a particular
223 0.30 Wed. July 5, 2006
224 ---------------------------------------
225 This is the first version of Class::MOP
226 to introduce the immutable features which
227 will be used for optimizating the MOP.
228 This support should still be considered
229 experimental, but moving towards stability.
230 ---------------------------------------
232 * Created Class::MOP::Class::Immutable
234 * Created the Class::MOP::Package and
235 Class::MOP::Module classes to more
236 closely conform to Perl 6's meta-model
239 - now inherits from Class::MOP::Module
240 - several methods moved to ::Module and
241 ::Package and now inherited
242 - added tests for this
244 * Class::MOP::Instance
245 - added an is_inlinable method to allow other
246 classes to check before they attempt to optimize.
247 - added an inline_create_instance to inline
248 instance creation (of course)
251 - the Class::MOP::Class::*_package_variable
252 methods are all now methods of Class::MOP::Package
253 and called *_package_symbol instead. This is
254 because they are now more general purpose symbol
255 table manipulation methods.
257 0.29_02 Thurs. June 22, 2006
258 ++ DEVELOPER RELEASE ++
260 - small change in &create so that it behaves
261 properly when inherited
262 - small fix to &clone_instance
264 0.29_01 Fri. May 12, 2006
265 ++ DEVELOPER RELEASE ++
266 - This release works in combination with
267 Moose 0.09_01, it is a developer release
268 because it introduces a new instance
269 sub-protocol and has not yet been
273 - anon-classes are now properly garbage collected
274 - added tests for this
275 - improved method modifier wrapping
277 * Class::MOP::Instance
278 - added new instance protocol
279 - added tests for this
280 - changed all relevant modules and examples
282 - Class::MOP::Attribute
286 - you no longer need to specify the metaclass
287 itself, if it is not there, Class::MOP::Class
289 - updated tests for this
292 - added ArrayBasedStorage example to show
293 instance storage using ARRAY refs instead of
295 - added tests for this
296 - InsideOutClass is totally revised using the
297 new instance protocol
298 - added more tests for this
300 0.26 Mon. April 24, 2006
302 - added find_attribute_by_name method
303 - added tests and docs for this
304 - some small optimizations
306 * Class::MOP::Attribute
307 - some small optimizations
309 0.25 Thurs. April 20, 2006
311 - added create_anon_class for creating anonymous classes
312 - added tests for this
313 - added get_all_metaclasses, get_all_metaclass_names
314 and get_all_metaclass_instances method to allow
315 access to all the cached metaclass objects.
316 - attribute slot initialization is now the responsibility
317 of the attribute itself, and construct_instance now
318 delegates appropriately
320 * Class::MOP::Attribute
321 - attribute slot initialization is now the responsibility
322 of the attribute itself, so we added a method for it
323 called initialize_instance_slot
326 - adjusted all the examples to use the new attribute
327 initialize_instance_slot method
329 0.24 Tues. April 11, 2006
331 - cleaned up how the before/after/around method
332 modifiers get named with Sub::Name
334 0.23 Thurs. March 30, 2006
336 - fixed the way attribute defaults are handled
337 during instance construction (bug found by chansen)
339 * Class::MOP::Attribute
340 - read-only accessors ('reader') will now die if
341 passed more than one argument (attempting to write
343 - added tests for this
344 - adjusted all /example files to comply
346 0.22 Mon. March 20, 2006
348 - localized $@ in the *_package_variable functions
349 because otherwise, it does ugly things in Moose.
350 - added test case for this
352 0.21 Wed. March 15, 2006
354 - fixed issue where metaclasses are reaped from
355 our cache in global destruction, and so are not
356 available in DESTORY calls
358 0.20 Thurs. March 2, 2006
359 - removed the dependency for Clone since
360 we no longer to deep-cloning by default.
363 - added &package_name, &name and
364 &fully_qualified_name methods, some of
365 which were formerly private subs in
368 * Class::MOP::Method::Wrapped
369 - allows for a method to be wrapped with
370 before, after and around modifiers
371 - added tests and docs for this feature
374 - improved &get_package_symbol
375 - &version and &superclasses now use it
376 - methods are now blessed into Class::MOP::Method
378 - added methods to install CLOS-style method modifiers
379 - &add_before_method_modifier
380 - &add_after_method_modifier
381 - &add_around_method_modifier
382 - added tests and docs for these
383 - added &find_next_method_by_name which finds the
384 equivalent of SUPER::method_name
386 0.12 Thurs. Feb 23, 2006
387 - reduced the dependency on B, no need to always
391 - added docs to the C3 method dispatch order test
392 - fixed missing Algorithm::C3 dependency by making
393 the test skip if it is not installed
395 0.11 Mon Feb. 20, 2006
397 - added example of changing method dispatch order to C3
400 - changed how clone_instance behaves, it now only does a
401 shallow clone (see docs for more details)
402 - added docs and tests
404 0.10 Tues Feb. 14, 2006
405 ** This release was mostly about writing more tests and
406 cleaning out old and dusty code, the MOP should now
407 be considered "ready to use".
409 - adding more tests to get coverage up a little higher,
410 mostly testing errors and edge cases.
411 - test coverage is now at 99%
414 - no longer optionally exports to UNIVERSAL::meta or
415 creates a custom metaclass generator, use the
416 metaclass pragma instead.
419 - fixed a number of minor issues which came up in the
420 error/edge-case tests
422 * Class::MOP::Attribute
423 - fixed a number of minor issues which came up in the
424 error/edge-case tests
427 - fixing the AttributesWithHistory example, it was broken.
429 0.06 Thurs Feb. 9, 2006
431 - adding new metaclass pragma to make setting up the
432 metaclass a little more straightforward
435 - clean up bootstrapping to include more complete
436 attribute definitions for Class::MOP::Class and
437 Class::MOP::Attribute (accessors, readers, writers,
438 etc.) ... it is redundant, but is useful meta-info
442 - fixing minor meta-circularity issue with &meta, it
443 is now more useful for subclasses
444 - added &get_attribute_map as an accessor for the
445 hash of attribute meta objects
446 - &compute_all_applicable_attributes now just returns
447 the attribute meta-object, rather than the HASH ref
448 since all the same info can be gotten from the
449 attribute meta-object itself
450 - updated docs & tests to reflect
451 - added &clone_instance method which does a deep clone
452 of the instance structure created by &construct_instance
453 - added docs & tests for this
454 - added Clone as a dependency
455 - added &new_object and &clone_object convience methods to
456 return blessed new or cloned instances
457 - they handle Class::MOP::Class singletons correctly too
458 - added docs & tests for this
459 - cleaned up the &constuct_class_instance so that it behaves
460 more like &construct_instance (and managed the singletons too)
461 - added the &check_metaclass_compatibility method to make sure
462 that metaclasses are upward and downward compatible.
463 - added tests and docs for this
466 - adjusting code to use the &Class::MOP::Class::meta
468 - adjusting code to use the metaclass pragma
470 0.05 Sat Feb. 4, 2006
472 - added the &attribute_metaclass and &method_metaclass
473 attributes which contain a metaclass name to use for
474 attributes/methods respectively
477 - bootstrap additional attributes for Class::MOP::Class
480 - adjusted the example code and tests to use the new
481 &attribute_metaclass feature of Class::MOP::Class
485 0.04 Fri Feb. 3, 2006
487 - some documentation suggestions from #perl6
489 * Class::MOP::Attribute
490 - improved error messages
493 - added new examples:
494 - AttributesWithHistory
495 - ClassEncapsultedAttributes
497 0.03 Fri Feb. 3, 2006
498 - converted to Module::Build instead of EU::MM
500 * Class::MOP::Attribute
501 - refactored method generation code
502 - attributes are now associated with class directly
505 - refactored the InsideOut example to take advantage
506 of the Class::MOP::Attribute refactoring
507 - changed example files to .pod files and hide thier
508 package names from PAUSE (I don't want to own these
509 namespaces really, they are just examples)
511 0.02 Thurs Feb. 2, 2006
512 - moving examples from t/lib/* to examples/*
513 - adding POD documentation to the examples
515 0.01 Thurs Feb. 2, 2006