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