1 Revision history for Perl extension Class-MOP.
4 ~~ Many documentation updates ~~
6 * Class::MOP::Attribute
7 - default now checks the instance with defined to
8 avoid setting off bool-overloads (found by Carl Franks)
12 - bad name in a test, causing meaningless failuress.
18 - All attribute names are now consistent and follow Perl 6
19 style (prefixed with the sigil, and ! as the twigil for
20 private attrs). This should not affect any code, unless
21 you broke encapsulation, in which case, it is your problem
24 !! Class::MOP::Class::Immutable has been removed
26 * Class::MOP::Method::Constructor
27 - this has been moved out of Class::MOP::Class::Immutable
28 and is a proper subclass of Class::MOP::Method now.
31 - this module now uses Class::MOP::Immutable for the
32 immutable transformation instead of
33 Class::MOP::Class::Immutable.
35 + Class::MOP::Immutable
36 - this module now controls the transformation from a mutable
37 to an immutable version of the class. Docs for this will
41 0.36 Sun. Nov. 5, 2006
43 - added a few 'no warnings' lines to keep annoying
44 (and meaningless) warnings from chirping during
48 - some more bootstrapping is now done on the new
51 * Class::MOP::Class::Immutable
53 - constructor generation is now handled by
54 the Class::MOP::Method::Constructor class
56 * Class::MOP::Method::Constructor
57 - created this to handle constructor generation
58 in Class::MOP::Class::Immutable
60 * Class::MOP::Attribute
62 - attributes now delegate to the
63 Class::MOP::Method::Accessor to generate
66 * Class::MOP::Method::Accessor
67 - all accessor generation functions from
68 Class::MOP::Attribute have been moved here
70 0.35 Sat. Sept. 30, 2006
72 * scripts/class_browser.pl
73 - initial prototype of a class browser, more
74 on this to come. Comments and patches are
78 - All Class::MOP::* accessors are no longer
79 re-generated in the bootstrap, instead
80 they are aliased from the originals
81 - fixed tests to reflect
82 - added Class::MOP::Method (and its subclasses)
84 - adjusted tests for this
85 - added the Class::MOP::Instance attributes
90 - methods are no longer blessed CODE refs
91 but are actual objects which can be CODE-ified
92 - adjusted tests to compensate
93 - adjusted docs for this
96 - changed how methods are dealt with to
97 encapsulate most of the work into the
98 &get_method_map method
99 - made several adjustments for the change
100 in Class::MOP::Method
101 - &add_attribute now checks if you are adding
102 a duplicate name, and properly removes the
103 old one before installing the new one
104 - added tests for this
105 - adjusted docs for this
107 * Class::MOP::Class::Immutable
108 - added caching of &get_method_map
109 - fixed issue with &get_package_symbol
110 - cleaned up the methods that die (patch by David Wheeler)
112 * Class::MOP::Package
113 - added filtering capabilities to
114 &list_all_package_symbols
116 0.34 Sat. Aug. 26, 2006
118 - added the %:methods attribute, which like
119 the $:version and such just actually goes
120 to the symbol table to get it's stuff.
121 However, it makes the MOP more complete.
123 - The &create method now requires that all
124 but the package name now is passed in as
125 named parameters. See docs for more info.
126 - updated docs and tests for this
129 - added &dump method to easily Data::Dumper
133 - cleaned up the initialization of attributes
134 which do not store things in the instance
135 - added the %:methods attribute definition to
138 ~ lots of misc. test cleanup
140 0.33 Sat. Aug. 19, 2006
142 - moved the metaclass cache out of here
143 and it is now in Class::MOP itself.
146 - moved all the metaclass cache stuff here
147 - fixed all tests for this
149 * Class::MOP::Attribute
150 - reference values (other than CODE refs)
151 are no longer allowed for defaults
152 - added tests for this
154 * Class::MOP::Package
155 - fixed an issue with perl 5.8.1 and how it deals
156 with symbol tables. The namespace hash is now
157 always reloaded from the symbol table.
159 ~ lots of misc. documentation cleanup
161 0.32 Sat. Aug. 12, 2006
162 + added Class::MOP::Object so that the
163 metamodel is more complete (and closer
164 to what Perl 6 will probably be).
166 * Class::MOP::Package
167 - refactored entire class, this is now
168 the primary gateway between the metaclass
169 and the Perl 5 symbol table
170 - added many tests for this
171 - this class is now a subclass of
173 - added some tests to reflect this
176 - refactored all symbol table access to
177 use Class::MOP::Package methods instead
180 - adding the $:version attribute in the bootstrap
181 so that Module has a version as an attribute
182 - see comment in Class::MOP for details
183 - added the $:authority attribute to this module
184 as well as an &identifier method, to bring us
185 ever closer to Perl 6 goodness
186 - I have added $AUTHORITY to all the modules
187 - added tests for this
189 * Class::MOP::Instance
190 - added &deinitialize_slot for removing slots
192 - added tests for this
194 * Class::MOP::Attribute
195 - added support for &deinitialize_slot for removing
196 slots from an instance
197 - added tests for this
199 0.31 Sat. July 15, 2006
202 - added &find_method_by_name to locate a method
203 anywhere within the class hierarchy
205 * Class::MOP::Attribute
206 - added &set_value and &get_value for getting
207 the value of the attribute for a particular
210 0.30 Wed. July 5, 2006
211 ---------------------------------------
212 This is the first version of Class::MOP
213 to introduce the immutable features which
214 will be used for optimizating the MOP.
215 This support should still be considered
216 experimental, but moving towards stability.
217 ---------------------------------------
219 * Created Class::MOP::Class::Immutable
221 * Created the Class::MOP::Package and
222 Class::MOP::Module classes to more
223 closely conform to Perl 6's meta-model
226 - now inherits from Class::MOP::Module
227 - several methods moved to ::Module and
228 ::Package and now inherited
229 - added tests for this
231 * Class::MOP::Instance
232 - added an is_inlinable method to allow other
233 classes to check before they attempt to optimize.
234 - added an inline_create_instance to inline
235 instance creation (of course)
238 - the Class::MOP::Class::*_package_variable
239 methods are all now methods of Class::MOP::Package
240 and called *_package_symbol instead. This is
241 because they are now more general purpose symbol
242 table manipulation methods.
244 0.29_02 Thurs. June 22, 2006
245 ++ DEVELOPER RELEASE ++
247 - small change in &create so that it behaves
248 properly when inherited
249 - small fix to &clone_instance
251 0.29_01 Fri. May 12, 2006
252 ++ DEVELOPER RELEASE ++
253 - This release works in combination with
254 Moose 0.09_01, it is a developer release
255 because it introduces a new instance
256 sub-protocol and has not yet been
260 - anon-classes are now properly garbage collected
261 - added tests for this
262 - improved method modifier wrapping
264 * Class::MOP::Instance
265 - added new instance protocol
266 - added tests for this
267 - changed all relevant modules and examples
269 - Class::MOP::Attribute
273 - you no longer need to specify the metaclass
274 itself, if it is not there, Class::MOP::Class
276 - updated tests for this
279 - added ArrayBasedStorage example to show
280 instance storage using ARRAY refs instead of
282 - added tests for this
283 - InsideOutClass is totally revised using the
284 new instance protocol
285 - added more tests for this
287 0.26 Mon. April 24, 2006
289 - added find_attribute_by_name method
290 - added tests and docs for this
291 - some small optimizations
293 * Class::MOP::Attribute
294 - some small optimizations
296 0.25 Thurs. April 20, 2006
298 - added create_anon_class for creating anonymous classes
299 - added tests for this
300 - added get_all_metaclasses, get_all_metaclass_names
301 and get_all_metaclass_instances method to allow
302 access to all the cached metaclass objects.
303 - attribute slot initialization is now the responsibility
304 of the attribute itself, and construct_instance now
305 delegates appropriately
307 * Class::MOP::Attribute
308 - attribute slot initialization is now the responsibility
309 of the attribute itself, so we added a method for it
310 called initialize_instance_slot
313 - adjusted all the examples to use the new attribute
314 initialize_instance_slot method
316 0.24 Tues. April 11, 2006
318 - cleaned up how the before/after/around method
319 modifiers get named with Sub::Name
321 0.23 Thurs. March 30, 2006
323 - fixed the way attribute defaults are handled
324 during instance construction (bug found by chansen)
326 * Class::MOP::Attribute
327 - read-only accessors ('reader') will now die if
328 passed more than one argument (attempting to write
330 - added tests for this
331 - adjusted all /example files to comply
333 0.22 Mon. March 20, 2006
335 - localized $@ in the *_package_variable functions
336 because otherwise, it does ugly things in Moose.
337 - added test case for this
339 0.21 Wed. March 15, 2006
341 - fixed issue where metaclasses are reaped from
342 our cache in global destruction, and so are not
343 available in DESTORY calls
345 0.20 Thurs. March 2, 2006
346 - removed the dependency for Clone since
347 we no longer to deep-cloning by default.
350 - added &package_name, &name and
351 &fully_qualified_name methods, some of
352 which were formerly private subs in
355 * Class::MOP::Method::Wrapped
356 - allows for a method to be wrapped with
357 before, after and around modifiers
358 - added tests and docs for this feature
361 - improved &get_package_symbol
362 - &version and &superclasses now use it
363 - methods are now blessed into Class::MOP::Method
365 - added methods to install CLOS-style method modifiers
366 - &add_before_method_modifier
367 - &add_after_method_modifier
368 - &add_around_method_modifier
369 - added tests and docs for these
370 - added &find_next_method_by_name which finds the
371 equivalent of SUPER::method_name
373 0.12 Thurs. Feb 23, 2006
374 - reduced the dependency on B, no need to always
378 - added docs to the C3 method dispatch order test
379 - fixed missing Algorithm::C3 dependency by making
380 the test skip if it is not installed
382 0.11 Mon Feb. 20, 2006
384 - added example of changing method dispatch order to C3
387 - changed how clone_instance behaves, it now only does a
388 shallow clone (see docs for more details)
389 - added docs and tests
391 0.10 Tues Feb. 14, 2006
392 ** This release was mostly about writing more tests and
393 cleaning out old and dusty code, the MOP should now
394 be considered "ready to use".
396 - adding more tests to get coverage up a little higher,
397 mostly testing errors and edge cases.
398 - test coverage is now at 99%
401 - no longer optionally exports to UNIVERSAL::meta or
402 creates a custom metaclass generator, use the
403 metaclass pragma instead.
406 - fixed a number of minor issues which came up in the
407 error/edge-case tests
409 * Class::MOP::Attribute
410 - fixed a number of minor issues which came up in the
411 error/edge-case tests
414 - fixing the AttributesWithHistory example, it was broken.
416 0.06 Thurs Feb. 9, 2006
418 - adding new metaclass pragma to make setting up the
419 metaclass a little more straightforward
422 - clean up bootstrapping to include more complete
423 attribute definitions for Class::MOP::Class and
424 Class::MOP::Attribute (accessors, readers, writers,
425 etc.) ... it is redundant, but is useful meta-info
429 - fixing minor meta-circularity issue with &meta, it
430 is now more useful for subclasses
431 - added &get_attribute_map as an accessor for the
432 hash of attribute meta objects
433 - &compute_all_applicable_attributes now just returns
434 the attribute meta-object, rather than the HASH ref
435 since all the same info can be gotten from the
436 attribute meta-object itself
437 - updated docs & tests to reflect
438 - added &clone_instance method which does a deep clone
439 of the instance structure created by &construct_instance
440 - added docs & tests for this
441 - added Clone as a dependency
442 - added &new_object and &clone_object convience methods to
443 return blessed new or cloned instances
444 - they handle Class::MOP::Class singletons correctly too
445 - added docs & tests for this
446 - cleaned up the &constuct_class_instance so that it behaves
447 more like &construct_instance (and managed the singletons too)
448 - added the &check_metaclass_compatibility method to make sure
449 that metaclasses are upward and downward compatible.
450 - added tests and docs for this
453 - adjusting code to use the &Class::MOP::Class::meta
455 - adjusting code to use the metaclass pragma
457 0.05 Sat Feb. 4, 2006
459 - added the &attribute_metaclass and &method_metaclass
460 attributes which contain a metaclass name to use for
461 attributes/methods respectively
464 - bootstrap additional attributes for Class::MOP::Class
467 - adjusted the example code and tests to use the new
468 &attribute_metaclass feature of Class::MOP::Class
472 0.04 Fri Feb. 3, 2006
474 - some documentation suggestions from #perl6
476 * Class::MOP::Attribute
477 - improved error messages
480 - added new examples:
481 - AttributesWithHistory
482 - ClassEncapsultedAttributes
484 0.03 Fri Feb. 3, 2006
485 - converted to Module::Build instead of EU::MM
487 * Class::MOP::Attribute
488 - refactored method generation code
489 - attributes are now associated with class directly
492 - refactored the InsideOut example to take advantage
493 of the Class::MOP::Attribute refactoring
494 - changed example files to .pod files and hide thier
495 package names from PAUSE (I don't want to own these
496 namespaces really, they are just examples)
498 0.02 Thurs Feb. 2, 2006
499 - moving examples from t/lib/* to examples/*
500 - adding POD documentation to the examples
502 0.01 Thurs Feb. 2, 2006