1 Revision history for Perl extension Class-MOP.
3 0.35 Sat. Sept. 23, 2006
5 * scripts/class_browser.pl
6 - initial prototype of a class browser, more
7 on this to come. Comments and patches are
11 - accessors are no longer generated, instead
12 they are aliased from the originals
13 - this means that the bootstrap will no longer
14 re-compiles accessors so as to keep the MOP
16 - fixed tests to reflect
17 - added Class::MOP::Method (and its subclasses)
19 - adjusted tests for this
20 - added the Class::MOP::Instance attributes
25 - methods are no longer blessed CODE refs
26 but are actual objects which can be CODE-ified
27 - adjusted tests to compensate
28 - adjusted docs for this
31 - changed how methods are dealt with to
32 encapsulate most of the work into the
33 &get_method_map method
34 - made several adjustments for the change
36 - &add_attribute now checks if you are adding
37 a duplicate name, and properly removes the
38 old one before installing the new one
39 - added tests for this
40 - adjusted docs for this
42 * Class::MOP::Class::Immutable
43 - added caching of &get_method_map
44 - fixed issue with &get_package_symbol
45 - cleaned up the methods that die (patch by David Wheeler)
48 - added filtering capabilities to
49 &list_all_package_symbols
51 0.34 Sat. Aug. 26, 2006
53 - added the %:methods attribute, which like
54 the $:version and such just actually goes
55 to the symbol table to get it's stuff.
56 However, it makes the MOP more complete.
58 - The &create method now requires that all
59 but the package name now is passed in as
60 named parameters. See docs for more info.
61 - updated docs and tests for this
64 - added &dump method to easily Data::Dumper
68 - cleaned up the initialization of attributes
69 which do not store things in the instance
70 - added the %:methods attribute definition to
73 ~ lots of misc. test cleanup
75 0.33 Sat. Aug. 19, 2006
77 - moved the metaclass cache out of here
78 and it is now in Class::MOP itself.
81 - moved all the metaclass cache stuff here
82 - fixed all tests for this
84 * Class::MOP::Attribute
85 - reference values (other than CODE refs)
86 are no longer allowed for defaults
87 - added tests for this
90 - fixed an issue with perl 5.8.1 and how it deals
91 with symbol tables. The namespace hash is now
92 always reloaded from the symbol table.
94 ~ lots of misc. documentation cleanup
96 0.32 Sat. Aug. 12, 2006
97 + added Class::MOP::Object so that the
98 metamodel is more complete (and closer
99 to what Perl 6 will probably be).
101 * Class::MOP::Package
102 - refactored entire class, this is now
103 the primary gateway between the metaclass
104 and the Perl 5 symbol table
105 - added many tests for this
106 - this class is now a subclass of
108 - added some tests to reflect this
111 - refactored all symbol table access to
112 use Class::MOP::Package methods instead
115 - adding the $:version attribute in the bootstrap
116 so that Module has a version as an attribute
117 - see comment in Class::MOP for details
118 - added the $:authority attribute to this module
119 as well as an &identifier method, to bring us
120 ever closer to Perl 6 goodness
121 - I have added $AUTHORITY to all the modules
122 - added tests for this
124 * Class::MOP::Instance
125 - added &deinitialize_slot for removing slots
127 - added tests for this
129 * Class::MOP::Attribute
130 - added support for &deinitialize_slot for removing
131 slots from an instance
132 - added tests for this
134 0.31 Sat. July 15, 2006
137 - added &find_method_by_name to locate a method
138 anywhere within the class hierarchy
140 * Class::MOP::Attribute
141 - added &set_value and &get_value for getting
142 the value of the attribute for a particular
145 0.30 Wed. July 5, 2006
146 ---------------------------------------
147 This is the first version of Class::MOP
148 to introduce the immutable features which
149 will be used for optimizating the MOP.
150 This support should still be considered
151 experimental, but moving towards stability.
152 ---------------------------------------
154 * Created Class::MOP::Class::Immutable
156 * Created the Class::MOP::Package and
157 Class::MOP::Module classes to more
158 closely conform to Perl 6's meta-model
161 - now inherits from Class::MOP::Module
162 - several methods moved to ::Module and
163 ::Package and now inherited
164 - added tests for this
166 * Class::MOP::Instance
167 - added an is_inlinable method to allow other
168 classes to check before they attempt to optimize.
169 - added an inline_create_instance to inline
170 instance creation (of course)
173 - the Class::MOP::Class::*_package_variable
174 methods are all now methods of Class::MOP::Package
175 and called *_package_symbol instead. This is
176 because they are now more general purpose symbol
177 table manipulation methods.
179 0.29_02 Thurs. June 22, 2006
180 ++ DEVELOPER RELEASE ++
182 - small change in &create so that it behaves
183 properly when inherited
184 - small fix to &clone_instance
186 0.29_01 Fri. May 12, 2006
187 ++ DEVELOPER RELEASE ++
188 - This release works in combination with
189 Moose 0.09_01, it is a developer release
190 because it introduces a new instance
191 sub-protocol and has not yet been
195 - anon-classes are now properly garbage collected
196 - added tests for this
197 - improved method modifier wrapping
199 * Class::MOP::Instance
200 - added new instance protocol
201 - added tests for this
202 - changed all relevant modules and examples
204 - Class::MOP::Attribute
208 - you no longer need to specify the metaclass
209 itself, if it is not there, Class::MOP::Class
211 - updated tests for this
214 - added ArrayBasedStorage example to show
215 instance storage using ARRAY refs instead of
217 - added tests for this
218 - InsideOutClass is totally revised using the
219 new instance protocol
220 - added more tests for this
222 0.26 Mon. April 24, 2006
224 - added find_attribute_by_name method
225 - added tests and docs for this
226 - some small optimizations
228 * Class::MOP::Attribute
229 - some small optimizations
231 0.25 Thurs. April 20, 2006
233 - added create_anon_class for creating anonymous classes
234 - added tests for this
235 - added get_all_metaclasses, get_all_metaclass_names
236 and get_all_metaclass_instances method to allow
237 access to all the cached metaclass objects.
238 - attribute slot initialization is now the responsibility
239 of the attribute itself, and construct_instance now
240 delegates appropriately
242 * Class::MOP::Attribute
243 - attribute slot initialization is now the responsibility
244 of the attribute itself, so we added a method for it
245 called initialize_instance_slot
248 - adjusted all the examples to use the new attribute
249 initialize_instance_slot method
251 0.24 Tues. April 11, 2006
253 - cleaned up how the before/after/around method
254 modifiers get named with Sub::Name
256 0.23 Thurs. March 30, 2006
258 - fixed the way attribute defaults are handled
259 during instance construction (bug found by chansen)
261 * Class::MOP::Attribute
262 - read-only accessors ('reader') will now die if
263 passed more than one argument (attempting to write
265 - added tests for this
266 - adjusted all /example files to comply
268 0.22 Mon. March 20, 2006
270 - localized $@ in the *_package_variable functions
271 because otherwise, it does ugly things in Moose.
272 - added test case for this
274 0.21 Wed. March 15, 2006
276 - fixed issue where metaclasses are reaped from
277 our cache in global destruction, and so are not
278 available in DESTORY calls
280 0.20 Thurs. March 2, 2006
281 - removed the dependency for Clone since
282 we no longer to deep-cloning by default.
285 - added &package_name, &name and
286 &fully_qualified_name methods, some of
287 which were formerly private subs in
290 * Class::MOP::Method::Wrapped
291 - allows for a method to be wrapped with
292 before, after and around modifiers
293 - added tests and docs for this feature
296 - improved &get_package_symbol
297 - &version and &superclasses now use it
298 - methods are now blessed into Class::MOP::Method
300 - added methods to install CLOS-style method modifiers
301 - &add_before_method_modifier
302 - &add_after_method_modifier
303 - &add_around_method_modifier
304 - added tests and docs for these
305 - added &find_next_method_by_name which finds the
306 equivalent of SUPER::method_name
308 0.12 Thurs. Feb 23, 2006
309 - reduced the dependency on B, no need to always
313 - added docs to the C3 method dispatch order test
314 - fixed missing Algorithm::C3 dependency by making
315 the test skip if it is not installed
317 0.11 Mon Feb. 20, 2006
319 - added example of changing method dispatch order to C3
322 - changed how clone_instance behaves, it now only does a
323 shallow clone (see docs for more details)
324 - added docs and tests
326 0.10 Tues Feb. 14, 2006
327 ** This release was mostly about writing more tests and
328 cleaning out old and dusty code, the MOP should now
329 be considered "ready to use".
331 - adding more tests to get coverage up a little higher,
332 mostly testing errors and edge cases.
333 - test coverage is now at 99%
336 - no longer optionally exports to UNIVERSAL::meta or
337 creates a custom metaclass generator, use the
338 metaclass pragma instead.
341 - fixed a number of minor issues which came up in the
342 error/edge-case tests
344 * Class::MOP::Attribute
345 - fixed a number of minor issues which came up in the
346 error/edge-case tests
349 - fixing the AttributesWithHistory example, it was broken.
351 0.06 Thurs Feb. 9, 2006
353 - adding new metaclass pragma to make setting up the
354 metaclass a little more straightforward
357 - clean up bootstrapping to include more complete
358 attribute definitions for Class::MOP::Class and
359 Class::MOP::Attribute (accessors, readers, writers,
360 etc.) ... it is redundant, but is useful meta-info
364 - fixing minor meta-circularity issue with &meta, it
365 is now more useful for subclasses
366 - added &get_attribute_map as an accessor for the
367 hash of attribute meta objects
368 - &compute_all_applicable_attributes now just returns
369 the attribute meta-object, rather than the HASH ref
370 since all the same info can be gotten from the
371 attribute meta-object itself
372 - updated docs & tests to reflect
373 - added &clone_instance method which does a deep clone
374 of the instance structure created by &construct_instance
375 - added docs & tests for this
376 - added Clone as a dependency
377 - added &new_object and &clone_object convience methods to
378 return blessed new or cloned instances
379 - they handle Class::MOP::Class singletons correctly too
380 - added docs & tests for this
381 - cleaned up the &constuct_class_instance so that it behaves
382 more like &construct_instance (and managed the singletons too)
383 - added the &check_metaclass_compatibility method to make sure
384 that metaclasses are upward and downward compatible.
385 - added tests and docs for this
388 - adjusting code to use the &Class::MOP::Class::meta
390 - adjusting code to use the metaclass pragma
392 0.05 Sat Feb. 4, 2006
394 - added the &attribute_metaclass and &method_metaclass
395 attributes which contain a metaclass name to use for
396 attributes/methods respectively
399 - bootstrap additional attributes for Class::MOP::Class
402 - adjusted the example code and tests to use the new
403 &attribute_metaclass feature of Class::MOP::Class
407 0.04 Fri Feb. 3, 2006
409 - some documentation suggestions from #perl6
411 * Class::MOP::Attribute
412 - improved error messages
415 - added new examples:
416 - AttributesWithHistory
417 - ClassEncapsultedAttributes
419 0.03 Fri Feb. 3, 2006
420 - converted to Module::Build instead of EU::MM
422 * Class::MOP::Attribute
423 - refactored method generation code
424 - attributes are now associated with class directly
427 - refactored the InsideOut example to take advantage
428 of the Class::MOP::Attribute refactoring
429 - changed example files to .pod files and hide thier
430 package names from PAUSE (I don't want to own these
431 namespaces really, they are just examples)
433 0.02 Thurs Feb. 2, 2006
434 - moving examples from t/lib/* to examples/*
435 - adding POD documentation to the examples
437 0.01 Thurs Feb. 2, 2006