1 Revision history for Perl extension Class-MOP.
4 ~~ More documentation updates ~~
7 - we now deal with stub methods properly
10 * Class::MOP::Attribute
11 - added get_read_method and get_write_method
12 thanks to groditi for this code, tests
14 - added tests and POD for this
16 0.37 Sat. March 10, 2007
17 ~~ Many, many documentation updates ~~
20 - added &load_class and &is_class_loaded
21 - added tests and docs for these
23 * Class::MOP::Attribute
24 - default now checks the instance with defined to
25 avoid setting off bool-overloads (found by Carl Franks)
29 - bad name in a test, causing meaningless failuress.
35 - All attribute names are now consistent and follow Perl 6
36 style (prefixed with the sigil, and ! as the twigil for
37 private attrs). This should not affect any code, unless
38 you broke encapsulation, in which case, it is your problem
41 !! Class::MOP::Class::Immutable has been removed
43 * Class::MOP::Method::Constructor
44 - this has been moved out of Class::MOP::Class::Immutable
45 and is a proper subclass of Class::MOP::Method now.
48 - this module now uses Class::MOP::Immutable for the
49 immutable transformation instead of
50 Class::MOP::Class::Immutable.
52 + Class::MOP::Immutable
53 - this module now controls the transformation from a mutable
54 to an immutable version of the class. Docs for this will
58 0.36 Sun. Nov. 5, 2006
60 - added a few 'no warnings' lines to keep annoying
61 (and meaningless) warnings from chirping during
65 - some more bootstrapping is now done on the new
68 * Class::MOP::Class::Immutable
70 - constructor generation is now handled by
71 the Class::MOP::Method::Constructor class
73 * Class::MOP::Method::Constructor
74 - created this to handle constructor generation
75 in Class::MOP::Class::Immutable
77 * Class::MOP::Attribute
79 - attributes now delegate to the
80 Class::MOP::Method::Accessor to generate
83 * Class::MOP::Method::Accessor
84 - all accessor generation functions from
85 Class::MOP::Attribute have been moved here
87 0.35 Sat. Sept. 30, 2006
89 * scripts/class_browser.pl
90 - initial prototype of a class browser, more
91 on this to come. Comments and patches are
95 - All Class::MOP::* accessors are no longer
96 re-generated in the bootstrap, instead
97 they are aliased from the originals
98 - fixed tests to reflect
99 - added Class::MOP::Method (and its subclasses)
101 - adjusted tests for this
102 - added the Class::MOP::Instance attributes
107 - methods are no longer blessed CODE refs
108 but are actual objects which can be CODE-ified
109 - adjusted tests to compensate
110 - adjusted docs for this
113 - changed how methods are dealt with to
114 encapsulate most of the work into the
115 &get_method_map method
116 - made several adjustments for the change
117 in Class::MOP::Method
118 - &add_attribute now checks if you are adding
119 a duplicate name, and properly removes the
120 old one before installing the new one
121 - added tests for this
122 - adjusted docs for this
124 * Class::MOP::Class::Immutable
125 - added caching of &get_method_map
126 - fixed issue with &get_package_symbol
127 - cleaned up the methods that die (patch by David Wheeler)
129 * Class::MOP::Package
130 - added filtering capabilities to
131 &list_all_package_symbols
133 0.34 Sat. Aug. 26, 2006
135 - added the %:methods attribute, which like
136 the $:version and such just actually goes
137 to the symbol table to get it's stuff.
138 However, it makes the MOP more complete.
140 - The &create method now requires that all
141 but the package name now is passed in as
142 named parameters. See docs for more info.
143 - updated docs and tests for this
146 - added &dump method to easily Data::Dumper
150 - cleaned up the initialization of attributes
151 which do not store things in the instance
152 - added the %:methods attribute definition to
155 ~ lots of misc. test cleanup
157 0.33 Sat. Aug. 19, 2006
159 - moved the metaclass cache out of here
160 and it is now in Class::MOP itself.
163 - moved all the metaclass cache stuff here
164 - fixed all tests for this
166 * Class::MOP::Attribute
167 - reference values (other than CODE refs)
168 are no longer allowed for defaults
169 - added tests for this
171 * Class::MOP::Package
172 - fixed an issue with perl 5.8.1 and how it deals
173 with symbol tables. The namespace hash is now
174 always reloaded from the symbol table.
176 ~ lots of misc. documentation cleanup
178 0.32 Sat. Aug. 12, 2006
179 + added Class::MOP::Object so that the
180 metamodel is more complete (and closer
181 to what Perl 6 will probably be).
183 * Class::MOP::Package
184 - refactored entire class, this is now
185 the primary gateway between the metaclass
186 and the Perl 5 symbol table
187 - added many tests for this
188 - this class is now a subclass of
190 - added some tests to reflect this
193 - refactored all symbol table access to
194 use Class::MOP::Package methods instead
197 - adding the $:version attribute in the bootstrap
198 so that Module has a version as an attribute
199 - see comment in Class::MOP for details
200 - added the $:authority attribute to this module
201 as well as an &identifier method, to bring us
202 ever closer to Perl 6 goodness
203 - I have added $AUTHORITY to all the modules
204 - added tests for this
206 * Class::MOP::Instance
207 - added &deinitialize_slot for removing slots
209 - added tests for this
211 * Class::MOP::Attribute
212 - added support for &deinitialize_slot for removing
213 slots from an instance
214 - added tests for this
216 0.31 Sat. July 15, 2006
219 - added &find_method_by_name to locate a method
220 anywhere within the class hierarchy
222 * Class::MOP::Attribute
223 - added &set_value and &get_value for getting
224 the value of the attribute for a particular
227 0.30 Wed. July 5, 2006
228 ---------------------------------------
229 This is the first version of Class::MOP
230 to introduce the immutable features which
231 will be used for optimizating the MOP.
232 This support should still be considered
233 experimental, but moving towards stability.
234 ---------------------------------------
236 * Created Class::MOP::Class::Immutable
238 * Created the Class::MOP::Package and
239 Class::MOP::Module classes to more
240 closely conform to Perl 6's meta-model
243 - now inherits from Class::MOP::Module
244 - several methods moved to ::Module and
245 ::Package and now inherited
246 - added tests for this
248 * Class::MOP::Instance
249 - added an is_inlinable method to allow other
250 classes to check before they attempt to optimize.
251 - added an inline_create_instance to inline
252 instance creation (of course)
255 - the Class::MOP::Class::*_package_variable
256 methods are all now methods of Class::MOP::Package
257 and called *_package_symbol instead. This is
258 because they are now more general purpose symbol
259 table manipulation methods.
261 0.29_02 Thurs. June 22, 2006
262 ++ DEVELOPER RELEASE ++
264 - small change in &create so that it behaves
265 properly when inherited
266 - small fix to &clone_instance
268 0.29_01 Fri. May 12, 2006
269 ++ DEVELOPER RELEASE ++
270 - This release works in combination with
271 Moose 0.09_01, it is a developer release
272 because it introduces a new instance
273 sub-protocol and has not yet been
277 - anon-classes are now properly garbage collected
278 - added tests for this
279 - improved method modifier wrapping
281 * Class::MOP::Instance
282 - added new instance protocol
283 - added tests for this
284 - changed all relevant modules and examples
286 - Class::MOP::Attribute
290 - you no longer need to specify the metaclass
291 itself, if it is not there, Class::MOP::Class
293 - updated tests for this
296 - added ArrayBasedStorage example to show
297 instance storage using ARRAY refs instead of
299 - added tests for this
300 - InsideOutClass is totally revised using the
301 new instance protocol
302 - added more tests for this
304 0.26 Mon. April 24, 2006
306 - added find_attribute_by_name method
307 - added tests and docs for this
308 - some small optimizations
310 * Class::MOP::Attribute
311 - some small optimizations
313 0.25 Thurs. April 20, 2006
315 - added create_anon_class for creating anonymous classes
316 - added tests for this
317 - added get_all_metaclasses, get_all_metaclass_names
318 and get_all_metaclass_instances method to allow
319 access to all the cached metaclass objects.
320 - attribute slot initialization is now the responsibility
321 of the attribute itself, and construct_instance now
322 delegates appropriately
324 * Class::MOP::Attribute
325 - attribute slot initialization is now the responsibility
326 of the attribute itself, so we added a method for it
327 called initialize_instance_slot
330 - adjusted all the examples to use the new attribute
331 initialize_instance_slot method
333 0.24 Tues. April 11, 2006
335 - cleaned up how the before/after/around method
336 modifiers get named with Sub::Name
338 0.23 Thurs. March 30, 2006
340 - fixed the way attribute defaults are handled
341 during instance construction (bug found by chansen)
343 * Class::MOP::Attribute
344 - read-only accessors ('reader') will now die if
345 passed more than one argument (attempting to write
347 - added tests for this
348 - adjusted all /example files to comply
350 0.22 Mon. March 20, 2006
352 - localized $@ in the *_package_variable functions
353 because otherwise, it does ugly things in Moose.
354 - added test case for this
356 0.21 Wed. March 15, 2006
358 - fixed issue where metaclasses are reaped from
359 our cache in global destruction, and so are not
360 available in DESTORY calls
362 0.20 Thurs. March 2, 2006
363 - removed the dependency for Clone since
364 we no longer to deep-cloning by default.
367 - added &package_name, &name and
368 &fully_qualified_name methods, some of
369 which were formerly private subs in
372 * Class::MOP::Method::Wrapped
373 - allows for a method to be wrapped with
374 before, after and around modifiers
375 - added tests and docs for this feature
378 - improved &get_package_symbol
379 - &version and &superclasses now use it
380 - methods are now blessed into Class::MOP::Method
382 - added methods to install CLOS-style method modifiers
383 - &add_before_method_modifier
384 - &add_after_method_modifier
385 - &add_around_method_modifier
386 - added tests and docs for these
387 - added &find_next_method_by_name which finds the
388 equivalent of SUPER::method_name
390 0.12 Thurs. Feb 23, 2006
391 - reduced the dependency on B, no need to always
395 - added docs to the C3 method dispatch order test
396 - fixed missing Algorithm::C3 dependency by making
397 the test skip if it is not installed
399 0.11 Mon Feb. 20, 2006
401 - added example of changing method dispatch order to C3
404 - changed how clone_instance behaves, it now only does a
405 shallow clone (see docs for more details)
406 - added docs and tests
408 0.10 Tues Feb. 14, 2006
409 ** This release was mostly about writing more tests and
410 cleaning out old and dusty code, the MOP should now
411 be considered "ready to use".
413 - adding more tests to get coverage up a little higher,
414 mostly testing errors and edge cases.
415 - test coverage is now at 99%
418 - no longer optionally exports to UNIVERSAL::meta or
419 creates a custom metaclass generator, use the
420 metaclass pragma instead.
423 - fixed a number of minor issues which came up in the
424 error/edge-case tests
426 * Class::MOP::Attribute
427 - fixed a number of minor issues which came up in the
428 error/edge-case tests
431 - fixing the AttributesWithHistory example, it was broken.
433 0.06 Thurs Feb. 9, 2006
435 - adding new metaclass pragma to make setting up the
436 metaclass a little more straightforward
439 - clean up bootstrapping to include more complete
440 attribute definitions for Class::MOP::Class and
441 Class::MOP::Attribute (accessors, readers, writers,
442 etc.) ... it is redundant, but is useful meta-info
446 - fixing minor meta-circularity issue with &meta, it
447 is now more useful for subclasses
448 - added &get_attribute_map as an accessor for the
449 hash of attribute meta objects
450 - &compute_all_applicable_attributes now just returns
451 the attribute meta-object, rather than the HASH ref
452 since all the same info can be gotten from the
453 attribute meta-object itself
454 - updated docs & tests to reflect
455 - added &clone_instance method which does a deep clone
456 of the instance structure created by &construct_instance
457 - added docs & tests for this
458 - added Clone as a dependency
459 - added &new_object and &clone_object convience methods to
460 return blessed new or cloned instances
461 - they handle Class::MOP::Class singletons correctly too
462 - added docs & tests for this
463 - cleaned up the &constuct_class_instance so that it behaves
464 more like &construct_instance (and managed the singletons too)
465 - added the &check_metaclass_compatibility method to make sure
466 that metaclasses are upward and downward compatible.
467 - added tests and docs for this
470 - adjusting code to use the &Class::MOP::Class::meta
472 - adjusting code to use the metaclass pragma
474 0.05 Sat Feb. 4, 2006
476 - added the &attribute_metaclass and &method_metaclass
477 attributes which contain a metaclass name to use for
478 attributes/methods respectively
481 - bootstrap additional attributes for Class::MOP::Class
484 - adjusted the example code and tests to use the new
485 &attribute_metaclass feature of Class::MOP::Class
489 0.04 Fri Feb. 3, 2006
491 - some documentation suggestions from #perl6
493 * Class::MOP::Attribute
494 - improved error messages
497 - added new examples:
498 - AttributesWithHistory
499 - ClassEncapsultedAttributes
501 0.03 Fri Feb. 3, 2006
502 - converted to Module::Build instead of EU::MM
504 * Class::MOP::Attribute
505 - refactored method generation code
506 - attributes are now associated with class directly
509 - refactored the InsideOut example to take advantage
510 of the Class::MOP::Attribute refactoring
511 - changed example files to .pod files and hide thier
512 package names from PAUSE (I don't want to own these
513 namespaces really, they are just examples)
515 0.02 Thurs Feb. 2, 2006
516 - moving examples from t/lib/* to examples/*
517 - adding POD documentation to the examples
519 0.01 Thurs Feb. 2, 2006