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 - bad name in a test, causing meaningless failuress.
16 - All attribute names are now consistent and follow Perl 6
17 style (prefixed with the sigil, and ! as the twigil for
18 private attrs). This should not affect any code, unless
19 you broke encapsulation, in which case, it is your problem
22 !! Class::MOP::Class::Immutable has been removed
24 * Class::MOP::Method::Constructor
25 - this has been moved out of Class::MOP::Class::Immutable
26 and is a proper subclass of Class::MOP::Method now.
29 - this module now uses Class::MOP::Immutable for the
30 immutable transformation instead of
31 Class::MOP::Class::Immutable.
33 + Class::MOP::Immutable
34 - this module now controls the transformation from a mutable
35 to an immutable version of the class. Docs for this will
39 0.36 Sun. Nov. 5, 2006
41 - added a few 'no warnings' lines to keep annoying
42 (and meaningless) warnings from chirping during
46 - some more bootstrapping is now done on the new
49 * Class::MOP::Class::Immutable
51 - constructor generation is now handled by
52 the Class::MOP::Method::Constructor class
54 * Class::MOP::Method::Constructor
55 - created this to handle constructor generation
56 in Class::MOP::Class::Immutable
58 * Class::MOP::Attribute
60 - attributes now delegate to the
61 Class::MOP::Method::Accessor to generate
64 * Class::MOP::Method::Accessor
65 - all accessor generation functions from
66 Class::MOP::Attribute have been moved here
68 0.35 Sat. Sept. 30, 2006
70 * scripts/class_browser.pl
71 - initial prototype of a class browser, more
72 on this to come. Comments and patches are
76 - All Class::MOP::* accessors are no longer
77 re-generated in the bootstrap, instead
78 they are aliased from the originals
79 - fixed tests to reflect
80 - added Class::MOP::Method (and its subclasses)
82 - adjusted tests for this
83 - added the Class::MOP::Instance attributes
88 - methods are no longer blessed CODE refs
89 but are actual objects which can be CODE-ified
90 - adjusted tests to compensate
91 - adjusted docs for this
94 - changed how methods are dealt with to
95 encapsulate most of the work into the
96 &get_method_map method
97 - made several adjustments for the change
99 - &add_attribute now checks if you are adding
100 a duplicate name, and properly removes the
101 old one before installing the new one
102 - added tests for this
103 - adjusted docs for this
105 * Class::MOP::Class::Immutable
106 - added caching of &get_method_map
107 - fixed issue with &get_package_symbol
108 - cleaned up the methods that die (patch by David Wheeler)
110 * Class::MOP::Package
111 - added filtering capabilities to
112 &list_all_package_symbols
114 0.34 Sat. Aug. 26, 2006
116 - added the %:methods attribute, which like
117 the $:version and such just actually goes
118 to the symbol table to get it's stuff.
119 However, it makes the MOP more complete.
121 - The &create method now requires that all
122 but the package name now is passed in as
123 named parameters. See docs for more info.
124 - updated docs and tests for this
127 - added &dump method to easily Data::Dumper
131 - cleaned up the initialization of attributes
132 which do not store things in the instance
133 - added the %:methods attribute definition to
136 ~ lots of misc. test cleanup
138 0.33 Sat. Aug. 19, 2006
140 - moved the metaclass cache out of here
141 and it is now in Class::MOP itself.
144 - moved all the metaclass cache stuff here
145 - fixed all tests for this
147 * Class::MOP::Attribute
148 - reference values (other than CODE refs)
149 are no longer allowed for defaults
150 - added tests for this
152 * Class::MOP::Package
153 - fixed an issue with perl 5.8.1 and how it deals
154 with symbol tables. The namespace hash is now
155 always reloaded from the symbol table.
157 ~ lots of misc. documentation cleanup
159 0.32 Sat. Aug. 12, 2006
160 + added Class::MOP::Object so that the
161 metamodel is more complete (and closer
162 to what Perl 6 will probably be).
164 * Class::MOP::Package
165 - refactored entire class, this is now
166 the primary gateway between the metaclass
167 and the Perl 5 symbol table
168 - added many tests for this
169 - this class is now a subclass of
171 - added some tests to reflect this
174 - refactored all symbol table access to
175 use Class::MOP::Package methods instead
178 - adding the $:version attribute in the bootstrap
179 so that Module has a version as an attribute
180 - see comment in Class::MOP for details
181 - added the $:authority attribute to this module
182 as well as an &identifier method, to bring us
183 ever closer to Perl 6 goodness
184 - I have added $AUTHORITY to all the modules
185 - added tests for this
187 * Class::MOP::Instance
188 - added &deinitialize_slot for removing slots
190 - added tests for this
192 * Class::MOP::Attribute
193 - added support for &deinitialize_slot for removing
194 slots from an instance
195 - added tests for this
197 0.31 Sat. July 15, 2006
200 - added &find_method_by_name to locate a method
201 anywhere within the class hierarchy
203 * Class::MOP::Attribute
204 - added &set_value and &get_value for getting
205 the value of the attribute for a particular
208 0.30 Wed. July 5, 2006
209 ---------------------------------------
210 This is the first version of Class::MOP
211 to introduce the immutable features which
212 will be used for optimizating the MOP.
213 This support should still be considered
214 experimental, but moving towards stability.
215 ---------------------------------------
217 * Created Class::MOP::Class::Immutable
219 * Created the Class::MOP::Package and
220 Class::MOP::Module classes to more
221 closely conform to Perl 6's meta-model
224 - now inherits from Class::MOP::Module
225 - several methods moved to ::Module and
226 ::Package and now inherited
227 - added tests for this
229 * Class::MOP::Instance
230 - added an is_inlinable method to allow other
231 classes to check before they attempt to optimize.
232 - added an inline_create_instance to inline
233 instance creation (of course)
236 - the Class::MOP::Class::*_package_variable
237 methods are all now methods of Class::MOP::Package
238 and called *_package_symbol instead. This is
239 because they are now more general purpose symbol
240 table manipulation methods.
242 0.29_02 Thurs. June 22, 2006
243 ++ DEVELOPER RELEASE ++
245 - small change in &create so that it behaves
246 properly when inherited
247 - small fix to &clone_instance
249 0.29_01 Fri. May 12, 2006
250 ++ DEVELOPER RELEASE ++
251 - This release works in combination with
252 Moose 0.09_01, it is a developer release
253 because it introduces a new instance
254 sub-protocol and has not yet been
258 - anon-classes are now properly garbage collected
259 - added tests for this
260 - improved method modifier wrapping
262 * Class::MOP::Instance
263 - added new instance protocol
264 - added tests for this
265 - changed all relevant modules and examples
267 - Class::MOP::Attribute
271 - you no longer need to specify the metaclass
272 itself, if it is not there, Class::MOP::Class
274 - updated tests for this
277 - added ArrayBasedStorage example to show
278 instance storage using ARRAY refs instead of
280 - added tests for this
281 - InsideOutClass is totally revised using the
282 new instance protocol
283 - added more tests for this
285 0.26 Mon. April 24, 2006
287 - added find_attribute_by_name method
288 - added tests and docs for this
289 - some small optimizations
291 * Class::MOP::Attribute
292 - some small optimizations
294 0.25 Thurs. April 20, 2006
296 - added create_anon_class for creating anonymous classes
297 - added tests for this
298 - added get_all_metaclasses, get_all_metaclass_names
299 and get_all_metaclass_instances method to allow
300 access to all the cached metaclass objects.
301 - attribute slot initialization is now the responsibility
302 of the attribute itself, and construct_instance now
303 delegates appropriately
305 * Class::MOP::Attribute
306 - attribute slot initialization is now the responsibility
307 of the attribute itself, so we added a method for it
308 called initialize_instance_slot
311 - adjusted all the examples to use the new attribute
312 initialize_instance_slot method
314 0.24 Tues. April 11, 2006
316 - cleaned up how the before/after/around method
317 modifiers get named with Sub::Name
319 0.23 Thurs. March 30, 2006
321 - fixed the way attribute defaults are handled
322 during instance construction (bug found by chansen)
324 * Class::MOP::Attribute
325 - read-only accessors ('reader') will now die if
326 passed more than one argument (attempting to write
328 - added tests for this
329 - adjusted all /example files to comply
331 0.22 Mon. March 20, 2006
333 - localized $@ in the *_package_variable functions
334 because otherwise, it does ugly things in Moose.
335 - added test case for this
337 0.21 Wed. March 15, 2006
339 - fixed issue where metaclasses are reaped from
340 our cache in global destruction, and so are not
341 available in DESTORY calls
343 0.20 Thurs. March 2, 2006
344 - removed the dependency for Clone since
345 we no longer to deep-cloning by default.
348 - added &package_name, &name and
349 &fully_qualified_name methods, some of
350 which were formerly private subs in
353 * Class::MOP::Method::Wrapped
354 - allows for a method to be wrapped with
355 before, after and around modifiers
356 - added tests and docs for this feature
359 - improved &get_package_symbol
360 - &version and &superclasses now use it
361 - methods are now blessed into Class::MOP::Method
363 - added methods to install CLOS-style method modifiers
364 - &add_before_method_modifier
365 - &add_after_method_modifier
366 - &add_around_method_modifier
367 - added tests and docs for these
368 - added &find_next_method_by_name which finds the
369 equivalent of SUPER::method_name
371 0.12 Thurs. Feb 23, 2006
372 - reduced the dependency on B, no need to always
376 - added docs to the C3 method dispatch order test
377 - fixed missing Algorithm::C3 dependency by making
378 the test skip if it is not installed
380 0.11 Mon Feb. 20, 2006
382 - added example of changing method dispatch order to C3
385 - changed how clone_instance behaves, it now only does a
386 shallow clone (see docs for more details)
387 - added docs and tests
389 0.10 Tues Feb. 14, 2006
390 ** This release was mostly about writing more tests and
391 cleaning out old and dusty code, the MOP should now
392 be considered "ready to use".
394 - adding more tests to get coverage up a little higher,
395 mostly testing errors and edge cases.
396 - test coverage is now at 99%
399 - no longer optionally exports to UNIVERSAL::meta or
400 creates a custom metaclass generator, use the
401 metaclass pragma instead.
404 - fixed a number of minor issues which came up in the
405 error/edge-case tests
407 * Class::MOP::Attribute
408 - fixed a number of minor issues which came up in the
409 error/edge-case tests
412 - fixing the AttributesWithHistory example, it was broken.
414 0.06 Thurs Feb. 9, 2006
416 - adding new metaclass pragma to make setting up the
417 metaclass a little more straightforward
420 - clean up bootstrapping to include more complete
421 attribute definitions for Class::MOP::Class and
422 Class::MOP::Attribute (accessors, readers, writers,
423 etc.) ... it is redundant, but is useful meta-info
427 - fixing minor meta-circularity issue with &meta, it
428 is now more useful for subclasses
429 - added &get_attribute_map as an accessor for the
430 hash of attribute meta objects
431 - &compute_all_applicable_attributes now just returns
432 the attribute meta-object, rather than the HASH ref
433 since all the same info can be gotten from the
434 attribute meta-object itself
435 - updated docs & tests to reflect
436 - added &clone_instance method which does a deep clone
437 of the instance structure created by &construct_instance
438 - added docs & tests for this
439 - added Clone as a dependency
440 - added &new_object and &clone_object convience methods to
441 return blessed new or cloned instances
442 - they handle Class::MOP::Class singletons correctly too
443 - added docs & tests for this
444 - cleaned up the &constuct_class_instance so that it behaves
445 more like &construct_instance (and managed the singletons too)
446 - added the &check_metaclass_compatibility method to make sure
447 that metaclasses are upward and downward compatible.
448 - added tests and docs for this
451 - adjusting code to use the &Class::MOP::Class::meta
453 - adjusting code to use the metaclass pragma
455 0.05 Sat Feb. 4, 2006
457 - added the &attribute_metaclass and &method_metaclass
458 attributes which contain a metaclass name to use for
459 attributes/methods respectively
462 - bootstrap additional attributes for Class::MOP::Class
465 - adjusted the example code and tests to use the new
466 &attribute_metaclass feature of Class::MOP::Class
470 0.04 Fri Feb. 3, 2006
472 - some documentation suggestions from #perl6
474 * Class::MOP::Attribute
475 - improved error messages
478 - added new examples:
479 - AttributesWithHistory
480 - ClassEncapsultedAttributes
482 0.03 Fri Feb. 3, 2006
483 - converted to Module::Build instead of EU::MM
485 * Class::MOP::Attribute
486 - refactored method generation code
487 - attributes are now associated with class directly
490 - refactored the InsideOut example to take advantage
491 of the Class::MOP::Attribute refactoring
492 - changed example files to .pod files and hide thier
493 package names from PAUSE (I don't want to own these
494 namespaces really, they are just examples)
496 0.02 Thurs Feb. 2, 2006
497 - moving examples from t/lib/* to examples/*
498 - adding POD documentation to the examples
500 0.01 Thurs Feb. 2, 2006