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