1 Revision history for Perl extension Class-MOP.
4 * Class::MOP::Attribute
5 - default now checks the instance with defined to
6 avoid setting off bool-overloads (found by Carl Franks)
10 - added a few 'no warnings' lines to keep annoying
11 (and meaningless) warnings from chirping during
15 - some more bootstrapping is now done on the new
18 * Class::MOP::Class::Immutable
20 - constructor generation is now handled by
21 the Class::MOP::Method::Constructor class
23 * Class::MOP::Method::Constructor
24 - created this to handle constructor generation
25 in Class::MOP::Class::Immutable
27 * Class::MOP::Attribute
29 - attributes now delegate to the
30 Class::MOP::Method::Accessor to generate
33 * Class::MOP::Method::Accessor
34 - all accessor generation functions from
35 Class::MOP::Attribute have been moved here
37 0.35 Sat. Sept. 30, 2006
39 * scripts/class_browser.pl
40 - initial prototype of a class browser, more
41 on this to come. Comments and patches are
45 - All Class::MOP::* accessors are no longer
46 re-generated in the bootstrap, instead
47 they are aliased from the originals
48 - fixed tests to reflect
49 - added Class::MOP::Method (and its subclasses)
51 - adjusted tests for this
52 - added the Class::MOP::Instance attributes
57 - methods are no longer blessed CODE refs
58 but are actual objects which can be CODE-ified
59 - adjusted tests to compensate
60 - adjusted docs for this
63 - changed how methods are dealt with to
64 encapsulate most of the work into the
65 &get_method_map method
66 - made several adjustments for the change
68 - &add_attribute now checks if you are adding
69 a duplicate name, and properly removes the
70 old one before installing the new one
71 - added tests for this
72 - adjusted docs for this
74 * Class::MOP::Class::Immutable
75 - added caching of &get_method_map
76 - fixed issue with &get_package_symbol
77 - cleaned up the methods that die (patch by David Wheeler)
80 - added filtering capabilities to
81 &list_all_package_symbols
83 0.34 Sat. Aug. 26, 2006
85 - added the %:methods attribute, which like
86 the $:version and such just actually goes
87 to the symbol table to get it's stuff.
88 However, it makes the MOP more complete.
90 - The &create method now requires that all
91 but the package name now is passed in as
92 named parameters. See docs for more info.
93 - updated docs and tests for this
96 - added &dump method to easily Data::Dumper
100 - cleaned up the initialization of attributes
101 which do not store things in the instance
102 - added the %:methods attribute definition to
105 ~ lots of misc. test cleanup
107 0.33 Sat. Aug. 19, 2006
109 - moved the metaclass cache out of here
110 and it is now in Class::MOP itself.
113 - moved all the metaclass cache stuff here
114 - fixed all tests for this
116 * Class::MOP::Attribute
117 - reference values (other than CODE refs)
118 are no longer allowed for defaults
119 - added tests for this
121 * Class::MOP::Package
122 - fixed an issue with perl 5.8.1 and how it deals
123 with symbol tables. The namespace hash is now
124 always reloaded from the symbol table.
126 ~ lots of misc. documentation cleanup
128 0.32 Sat. Aug. 12, 2006
129 + added Class::MOP::Object so that the
130 metamodel is more complete (and closer
131 to what Perl 6 will probably be).
133 * Class::MOP::Package
134 - refactored entire class, this is now
135 the primary gateway between the metaclass
136 and the Perl 5 symbol table
137 - added many tests for this
138 - this class is now a subclass of
140 - added some tests to reflect this
143 - refactored all symbol table access to
144 use Class::MOP::Package methods instead
147 - adding the $:version attribute in the bootstrap
148 so that Module has a version as an attribute
149 - see comment in Class::MOP for details
150 - added the $:authority attribute to this module
151 as well as an &identifier method, to bring us
152 ever closer to Perl 6 goodness
153 - I have added $AUTHORITY to all the modules
154 - added tests for this
156 * Class::MOP::Instance
157 - added &deinitialize_slot for removing slots
159 - added tests for this
161 * Class::MOP::Attribute
162 - added support for &deinitialize_slot for removing
163 slots from an instance
164 - added tests for this
166 0.31 Sat. July 15, 2006
169 - added &find_method_by_name to locate a method
170 anywhere within the class hierarchy
172 * Class::MOP::Attribute
173 - added &set_value and &get_value for getting
174 the value of the attribute for a particular
177 0.30 Wed. July 5, 2006
178 ---------------------------------------
179 This is the first version of Class::MOP
180 to introduce the immutable features which
181 will be used for optimizating the MOP.
182 This support should still be considered
183 experimental, but moving towards stability.
184 ---------------------------------------
186 * Created Class::MOP::Class::Immutable
188 * Created the Class::MOP::Package and
189 Class::MOP::Module classes to more
190 closely conform to Perl 6's meta-model
193 - now inherits from Class::MOP::Module
194 - several methods moved to ::Module and
195 ::Package and now inherited
196 - added tests for this
198 * Class::MOP::Instance
199 - added an is_inlinable method to allow other
200 classes to check before they attempt to optimize.
201 - added an inline_create_instance to inline
202 instance creation (of course)
205 - the Class::MOP::Class::*_package_variable
206 methods are all now methods of Class::MOP::Package
207 and called *_package_symbol instead. This is
208 because they are now more general purpose symbol
209 table manipulation methods.
211 0.29_02 Thurs. June 22, 2006
212 ++ DEVELOPER RELEASE ++
214 - small change in &create so that it behaves
215 properly when inherited
216 - small fix to &clone_instance
218 0.29_01 Fri. May 12, 2006
219 ++ DEVELOPER RELEASE ++
220 - This release works in combination with
221 Moose 0.09_01, it is a developer release
222 because it introduces a new instance
223 sub-protocol and has not yet been
227 - anon-classes are now properly garbage collected
228 - added tests for this
229 - improved method modifier wrapping
231 * Class::MOP::Instance
232 - added new instance protocol
233 - added tests for this
234 - changed all relevant modules and examples
236 - Class::MOP::Attribute
240 - you no longer need to specify the metaclass
241 itself, if it is not there, Class::MOP::Class
243 - updated tests for this
246 - added ArrayBasedStorage example to show
247 instance storage using ARRAY refs instead of
249 - added tests for this
250 - InsideOutClass is totally revised using the
251 new instance protocol
252 - added more tests for this
254 0.26 Mon. April 24, 2006
256 - added find_attribute_by_name method
257 - added tests and docs for this
258 - some small optimizations
260 * Class::MOP::Attribute
261 - some small optimizations
263 0.25 Thurs. April 20, 2006
265 - added create_anon_class for creating anonymous classes
266 - added tests for this
267 - added get_all_metaclasses, get_all_metaclass_names
268 and get_all_metaclass_instances method to allow
269 access to all the cached metaclass objects.
270 - attribute slot initialization is now the responsibility
271 of the attribute itself, and construct_instance now
272 delegates appropriately
274 * Class::MOP::Attribute
275 - attribute slot initialization is now the responsibility
276 of the attribute itself, so we added a method for it
277 called initialize_instance_slot
280 - adjusted all the examples to use the new attribute
281 initialize_instance_slot method
283 0.24 Tues. April 11, 2006
285 - cleaned up how the before/after/around method
286 modifiers get named with Sub::Name
288 0.23 Thurs. March 30, 2006
290 - fixed the way attribute defaults are handled
291 during instance construction (bug found by chansen)
293 * Class::MOP::Attribute
294 - read-only accessors ('reader') will now die if
295 passed more than one argument (attempting to write
297 - added tests for this
298 - adjusted all /example files to comply
300 0.22 Mon. March 20, 2006
302 - localized $@ in the *_package_variable functions
303 because otherwise, it does ugly things in Moose.
304 - added test case for this
306 0.21 Wed. March 15, 2006
308 - fixed issue where metaclasses are reaped from
309 our cache in global destruction, and so are not
310 available in DESTORY calls
312 0.20 Thurs. March 2, 2006
313 - removed the dependency for Clone since
314 we no longer to deep-cloning by default.
317 - added &package_name, &name and
318 &fully_qualified_name methods, some of
319 which were formerly private subs in
322 * Class::MOP::Method::Wrapped
323 - allows for a method to be wrapped with
324 before, after and around modifiers
325 - added tests and docs for this feature
328 - improved &get_package_symbol
329 - &version and &superclasses now use it
330 - methods are now blessed into Class::MOP::Method
332 - added methods to install CLOS-style method modifiers
333 - &add_before_method_modifier
334 - &add_after_method_modifier
335 - &add_around_method_modifier
336 - added tests and docs for these
337 - added &find_next_method_by_name which finds the
338 equivalent of SUPER::method_name
340 0.12 Thurs. Feb 23, 2006
341 - reduced the dependency on B, no need to always
345 - added docs to the C3 method dispatch order test
346 - fixed missing Algorithm::C3 dependency by making
347 the test skip if it is not installed
349 0.11 Mon Feb. 20, 2006
351 - added example of changing method dispatch order to C3
354 - changed how clone_instance behaves, it now only does a
355 shallow clone (see docs for more details)
356 - added docs and tests
358 0.10 Tues Feb. 14, 2006
359 ** This release was mostly about writing more tests and
360 cleaning out old and dusty code, the MOP should now
361 be considered "ready to use".
363 - adding more tests to get coverage up a little higher,
364 mostly testing errors and edge cases.
365 - test coverage is now at 99%
368 - no longer optionally exports to UNIVERSAL::meta or
369 creates a custom metaclass generator, use the
370 metaclass pragma instead.
373 - fixed a number of minor issues which came up in the
374 error/edge-case tests
376 * Class::MOP::Attribute
377 - fixed a number of minor issues which came up in the
378 error/edge-case tests
381 - fixing the AttributesWithHistory example, it was broken.
383 0.06 Thurs Feb. 9, 2006
385 - adding new metaclass pragma to make setting up the
386 metaclass a little more straightforward
389 - clean up bootstrapping to include more complete
390 attribute definitions for Class::MOP::Class and
391 Class::MOP::Attribute (accessors, readers, writers,
392 etc.) ... it is redundant, but is useful meta-info
396 - fixing minor meta-circularity issue with &meta, it
397 is now more useful for subclasses
398 - added &get_attribute_map as an accessor for the
399 hash of attribute meta objects
400 - &compute_all_applicable_attributes now just returns
401 the attribute meta-object, rather than the HASH ref
402 since all the same info can be gotten from the
403 attribute meta-object itself
404 - updated docs & tests to reflect
405 - added &clone_instance method which does a deep clone
406 of the instance structure created by &construct_instance
407 - added docs & tests for this
408 - added Clone as a dependency
409 - added &new_object and &clone_object convience methods to
410 return blessed new or cloned instances
411 - they handle Class::MOP::Class singletons correctly too
412 - added docs & tests for this
413 - cleaned up the &constuct_class_instance so that it behaves
414 more like &construct_instance (and managed the singletons too)
415 - added the &check_metaclass_compatibility method to make sure
416 that metaclasses are upward and downward compatible.
417 - added tests and docs for this
420 - adjusting code to use the &Class::MOP::Class::meta
422 - adjusting code to use the metaclass pragma
424 0.05 Sat Feb. 4, 2006
426 - added the &attribute_metaclass and &method_metaclass
427 attributes which contain a metaclass name to use for
428 attributes/methods respectively
431 - bootstrap additional attributes for Class::MOP::Class
434 - adjusted the example code and tests to use the new
435 &attribute_metaclass feature of Class::MOP::Class
439 0.04 Fri Feb. 3, 2006
441 - some documentation suggestions from #perl6
443 * Class::MOP::Attribute
444 - improved error messages
447 - added new examples:
448 - AttributesWithHistory
449 - ClassEncapsultedAttributes
451 0.03 Fri Feb. 3, 2006
452 - converted to Module::Build instead of EU::MM
454 * Class::MOP::Attribute
455 - refactored method generation code
456 - attributes are now associated with class directly
459 - refactored the InsideOut example to take advantage
460 of the Class::MOP::Attribute refactoring
461 - changed example files to .pod files and hide thier
462 package names from PAUSE (I don't want to own these
463 namespaces really, they are just examples)
465 0.02 Thurs Feb. 2, 2006
466 - moving examples from t/lib/* to examples/*
467 - adding POD documentation to the examples
469 0.01 Thurs Feb. 2, 2006