1 Revision history for Perl extension Class-MOP.
4 ~~ More documentation updates ~~
6 - we now deal with stub methods properly
9 0.37 Sat. March 10, 2007
10 ~~ Many, many documentation updates ~~
13 - added &load_class and &is_class_loaded
14 - added tests and docs for these
16 * Class::MOP::Attribute
17 - default now checks the instance with defined to
18 avoid setting off bool-overloads (found by Carl Franks)
22 - bad name in a test, causing meaningless failuress.
28 - All attribute names are now consistent and follow Perl 6
29 style (prefixed with the sigil, and ! as the twigil for
30 private attrs). This should not affect any code, unless
31 you broke encapsulation, in which case, it is your problem
34 !! Class::MOP::Class::Immutable has been removed
36 * Class::MOP::Method::Constructor
37 - this has been moved out of Class::MOP::Class::Immutable
38 and is a proper subclass of Class::MOP::Method now.
41 - this module now uses Class::MOP::Immutable for the
42 immutable transformation instead of
43 Class::MOP::Class::Immutable.
45 + Class::MOP::Immutable
46 - this module now controls the transformation from a mutable
47 to an immutable version of the class. Docs for this will
51 0.36 Sun. Nov. 5, 2006
53 - added a few 'no warnings' lines to keep annoying
54 (and meaningless) warnings from chirping during
58 - some more bootstrapping is now done on the new
61 * Class::MOP::Class::Immutable
63 - constructor generation is now handled by
64 the Class::MOP::Method::Constructor class
66 * Class::MOP::Method::Constructor
67 - created this to handle constructor generation
68 in Class::MOP::Class::Immutable
70 * Class::MOP::Attribute
72 - attributes now delegate to the
73 Class::MOP::Method::Accessor to generate
76 * Class::MOP::Method::Accessor
77 - all accessor generation functions from
78 Class::MOP::Attribute have been moved here
80 0.35 Sat. Sept. 30, 2006
82 * scripts/class_browser.pl
83 - initial prototype of a class browser, more
84 on this to come. Comments and patches are
88 - All Class::MOP::* accessors are no longer
89 re-generated in the bootstrap, instead
90 they are aliased from the originals
91 - fixed tests to reflect
92 - added Class::MOP::Method (and its subclasses)
94 - adjusted tests for this
95 - added the Class::MOP::Instance attributes
100 - methods are no longer blessed CODE refs
101 but are actual objects which can be CODE-ified
102 - adjusted tests to compensate
103 - adjusted docs for this
106 - changed how methods are dealt with to
107 encapsulate most of the work into the
108 &get_method_map method
109 - made several adjustments for the change
110 in Class::MOP::Method
111 - &add_attribute now checks if you are adding
112 a duplicate name, and properly removes the
113 old one before installing the new one
114 - added tests for this
115 - adjusted docs for this
117 * Class::MOP::Class::Immutable
118 - added caching of &get_method_map
119 - fixed issue with &get_package_symbol
120 - cleaned up the methods that die (patch by David Wheeler)
122 * Class::MOP::Package
123 - added filtering capabilities to
124 &list_all_package_symbols
126 0.34 Sat. Aug. 26, 2006
128 - added the %:methods attribute, which like
129 the $:version and such just actually goes
130 to the symbol table to get it's stuff.
131 However, it makes the MOP more complete.
133 - The &create method now requires that all
134 but the package name now is passed in as
135 named parameters. See docs for more info.
136 - updated docs and tests for this
139 - added &dump method to easily Data::Dumper
143 - cleaned up the initialization of attributes
144 which do not store things in the instance
145 - added the %:methods attribute definition to
148 ~ lots of misc. test cleanup
150 0.33 Sat. Aug. 19, 2006
152 - moved the metaclass cache out of here
153 and it is now in Class::MOP itself.
156 - moved all the metaclass cache stuff here
157 - fixed all tests for this
159 * Class::MOP::Attribute
160 - reference values (other than CODE refs)
161 are no longer allowed for defaults
162 - added tests for this
164 * Class::MOP::Package
165 - fixed an issue with perl 5.8.1 and how it deals
166 with symbol tables. The namespace hash is now
167 always reloaded from the symbol table.
169 ~ lots of misc. documentation cleanup
171 0.32 Sat. Aug. 12, 2006
172 + added Class::MOP::Object so that the
173 metamodel is more complete (and closer
174 to what Perl 6 will probably be).
176 * Class::MOP::Package
177 - refactored entire class, this is now
178 the primary gateway between the metaclass
179 and the Perl 5 symbol table
180 - added many tests for this
181 - this class is now a subclass of
183 - added some tests to reflect this
186 - refactored all symbol table access to
187 use Class::MOP::Package methods instead
190 - adding the $:version attribute in the bootstrap
191 so that Module has a version as an attribute
192 - see comment in Class::MOP for details
193 - added the $:authority attribute to this module
194 as well as an &identifier method, to bring us
195 ever closer to Perl 6 goodness
196 - I have added $AUTHORITY to all the modules
197 - added tests for this
199 * Class::MOP::Instance
200 - added &deinitialize_slot for removing slots
202 - added tests for this
204 * Class::MOP::Attribute
205 - added support for &deinitialize_slot for removing
206 slots from an instance
207 - added tests for this
209 0.31 Sat. July 15, 2006
212 - added &find_method_by_name to locate a method
213 anywhere within the class hierarchy
215 * Class::MOP::Attribute
216 - added &set_value and &get_value for getting
217 the value of the attribute for a particular
220 0.30 Wed. July 5, 2006
221 ---------------------------------------
222 This is the first version of Class::MOP
223 to introduce the immutable features which
224 will be used for optimizating the MOP.
225 This support should still be considered
226 experimental, but moving towards stability.
227 ---------------------------------------
229 * Created Class::MOP::Class::Immutable
231 * Created the Class::MOP::Package and
232 Class::MOP::Module classes to more
233 closely conform to Perl 6's meta-model
236 - now inherits from Class::MOP::Module
237 - several methods moved to ::Module and
238 ::Package and now inherited
239 - added tests for this
241 * Class::MOP::Instance
242 - added an is_inlinable method to allow other
243 classes to check before they attempt to optimize.
244 - added an inline_create_instance to inline
245 instance creation (of course)
248 - the Class::MOP::Class::*_package_variable
249 methods are all now methods of Class::MOP::Package
250 and called *_package_symbol instead. This is
251 because they are now more general purpose symbol
252 table manipulation methods.
254 0.29_02 Thurs. June 22, 2006
255 ++ DEVELOPER RELEASE ++
257 - small change in &create so that it behaves
258 properly when inherited
259 - small fix to &clone_instance
261 0.29_01 Fri. May 12, 2006
262 ++ DEVELOPER RELEASE ++
263 - This release works in combination with
264 Moose 0.09_01, it is a developer release
265 because it introduces a new instance
266 sub-protocol and has not yet been
270 - anon-classes are now properly garbage collected
271 - added tests for this
272 - improved method modifier wrapping
274 * Class::MOP::Instance
275 - added new instance protocol
276 - added tests for this
277 - changed all relevant modules and examples
279 - Class::MOP::Attribute
283 - you no longer need to specify the metaclass
284 itself, if it is not there, Class::MOP::Class
286 - updated tests for this
289 - added ArrayBasedStorage example to show
290 instance storage using ARRAY refs instead of
292 - added tests for this
293 - InsideOutClass is totally revised using the
294 new instance protocol
295 - added more tests for this
297 0.26 Mon. April 24, 2006
299 - added find_attribute_by_name method
300 - added tests and docs for this
301 - some small optimizations
303 * Class::MOP::Attribute
304 - some small optimizations
306 0.25 Thurs. April 20, 2006
308 - added create_anon_class for creating anonymous classes
309 - added tests for this
310 - added get_all_metaclasses, get_all_metaclass_names
311 and get_all_metaclass_instances method to allow
312 access to all the cached metaclass objects.
313 - attribute slot initialization is now the responsibility
314 of the attribute itself, and construct_instance now
315 delegates appropriately
317 * Class::MOP::Attribute
318 - attribute slot initialization is now the responsibility
319 of the attribute itself, so we added a method for it
320 called initialize_instance_slot
323 - adjusted all the examples to use the new attribute
324 initialize_instance_slot method
326 0.24 Tues. April 11, 2006
328 - cleaned up how the before/after/around method
329 modifiers get named with Sub::Name
331 0.23 Thurs. March 30, 2006
333 - fixed the way attribute defaults are handled
334 during instance construction (bug found by chansen)
336 * Class::MOP::Attribute
337 - read-only accessors ('reader') will now die if
338 passed more than one argument (attempting to write
340 - added tests for this
341 - adjusted all /example files to comply
343 0.22 Mon. March 20, 2006
345 - localized $@ in the *_package_variable functions
346 because otherwise, it does ugly things in Moose.
347 - added test case for this
349 0.21 Wed. March 15, 2006
351 - fixed issue where metaclasses are reaped from
352 our cache in global destruction, and so are not
353 available in DESTORY calls
355 0.20 Thurs. March 2, 2006
356 - removed the dependency for Clone since
357 we no longer to deep-cloning by default.
360 - added &package_name, &name and
361 &fully_qualified_name methods, some of
362 which were formerly private subs in
365 * Class::MOP::Method::Wrapped
366 - allows for a method to be wrapped with
367 before, after and around modifiers
368 - added tests and docs for this feature
371 - improved &get_package_symbol
372 - &version and &superclasses now use it
373 - methods are now blessed into Class::MOP::Method
375 - added methods to install CLOS-style method modifiers
376 - &add_before_method_modifier
377 - &add_after_method_modifier
378 - &add_around_method_modifier
379 - added tests and docs for these
380 - added &find_next_method_by_name which finds the
381 equivalent of SUPER::method_name
383 0.12 Thurs. Feb 23, 2006
384 - reduced the dependency on B, no need to always
388 - added docs to the C3 method dispatch order test
389 - fixed missing Algorithm::C3 dependency by making
390 the test skip if it is not installed
392 0.11 Mon Feb. 20, 2006
394 - added example of changing method dispatch order to C3
397 - changed how clone_instance behaves, it now only does a
398 shallow clone (see docs for more details)
399 - added docs and tests
401 0.10 Tues Feb. 14, 2006
402 ** This release was mostly about writing more tests and
403 cleaning out old and dusty code, the MOP should now
404 be considered "ready to use".
406 - adding more tests to get coverage up a little higher,
407 mostly testing errors and edge cases.
408 - test coverage is now at 99%
411 - no longer optionally exports to UNIVERSAL::meta or
412 creates a custom metaclass generator, use the
413 metaclass pragma instead.
416 - fixed a number of minor issues which came up in the
417 error/edge-case tests
419 * Class::MOP::Attribute
420 - fixed a number of minor issues which came up in the
421 error/edge-case tests
424 - fixing the AttributesWithHistory example, it was broken.
426 0.06 Thurs Feb. 9, 2006
428 - adding new metaclass pragma to make setting up the
429 metaclass a little more straightforward
432 - clean up bootstrapping to include more complete
433 attribute definitions for Class::MOP::Class and
434 Class::MOP::Attribute (accessors, readers, writers,
435 etc.) ... it is redundant, but is useful meta-info
439 - fixing minor meta-circularity issue with &meta, it
440 is now more useful for subclasses
441 - added &get_attribute_map as an accessor for the
442 hash of attribute meta objects
443 - &compute_all_applicable_attributes now just returns
444 the attribute meta-object, rather than the HASH ref
445 since all the same info can be gotten from the
446 attribute meta-object itself
447 - updated docs & tests to reflect
448 - added &clone_instance method which does a deep clone
449 of the instance structure created by &construct_instance
450 - added docs & tests for this
451 - added Clone as a dependency
452 - added &new_object and &clone_object convience methods to
453 return blessed new or cloned instances
454 - they handle Class::MOP::Class singletons correctly too
455 - added docs & tests for this
456 - cleaned up the &constuct_class_instance so that it behaves
457 more like &construct_instance (and managed the singletons too)
458 - added the &check_metaclass_compatibility method to make sure
459 that metaclasses are upward and downward compatible.
460 - added tests and docs for this
463 - adjusting code to use the &Class::MOP::Class::meta
465 - adjusting code to use the metaclass pragma
467 0.05 Sat Feb. 4, 2006
469 - added the &attribute_metaclass and &method_metaclass
470 attributes which contain a metaclass name to use for
471 attributes/methods respectively
474 - bootstrap additional attributes for Class::MOP::Class
477 - adjusted the example code and tests to use the new
478 &attribute_metaclass feature of Class::MOP::Class
482 0.04 Fri Feb. 3, 2006
484 - some documentation suggestions from #perl6
486 * Class::MOP::Attribute
487 - improved error messages
490 - added new examples:
491 - AttributesWithHistory
492 - ClassEncapsultedAttributes
494 0.03 Fri Feb. 3, 2006
495 - converted to Module::Build instead of EU::MM
497 * Class::MOP::Attribute
498 - refactored method generation code
499 - attributes are now associated with class directly
502 - refactored the InsideOut example to take advantage
503 of the Class::MOP::Attribute refactoring
504 - changed example files to .pod files and hide thier
505 package names from PAUSE (I don't want to own these
506 namespaces really, they are just examples)
508 0.02 Thurs Feb. 2, 2006
509 - moving examples from t/lib/* to examples/*
510 - adding POD documentation to the examples
512 0.01 Thurs Feb. 2, 2006