slight speed improvements
[gitmo/Class-MOP.git] / Changes
CommitLineData
7c90a1a8 1Revision history for Perl extension Class-MOP.
2
a549ce50 30.34 Sat. Aug. 26, 2006
c4260b45 4 * Class::MOP::Class
5 - added the %:methods attribute, which like
6 the $:version and such just actually goes
7 to the symbol table to get it's stuff.
8 However, it makes the MOP more complete.
88dd563c 9 ** API CHANGE **
10 - The &create method now requires that all
11 but the package name now is passed in as
12 named parameters. See docs for more info.
13 - updated docs and tests for this
c4260b45 14
15 * Class::MOP::Object
16 - added &dump method to easily Data::Dumper
17 an object
18
19 * Class::MOP
20 - cleaned up the initialization of attributes
21 which do not store things in the instance
22 - added the %:methods attribute definition to
23 the bootstrap
88dd563c 24
25 ~ lots of misc. test cleanup
c4260b45 26
56e8dd5d 270.33 Sat. Aug. 19, 2006
be7677c7 28 * Class::MOP::Class
29 - moved the metaclass cache out of here
30 and it is now in Class::MOP itself.
56e8dd5d 31
32 * Class::MOP
33 - moved all the metaclass cache stuff here
34 - fixed all tests for this
be7677c7 35
148b4697 36 * Class::MOP::Attribute
37 - reference values (other than CODE refs)
38 are no longer allowed for defaults
39 - added tests for this
56dcfc1a 40
41 * Class::MOP::Package
42 - fixed an issue with perl 5.8.1 and how it deals
e3a2c885 43 with symbol tables. The namespace hash is now
44 always reloaded from the symbol table.
45
46 ~ lots of misc. documentation cleanup
1396f86b 47
716c5765 480.32 Sat. Aug. 12, 2006
6e57504d 49 + added Class::MOP::Object so that the
50 metamodel is more complete (and closer
51 to what Perl 6 will probably be).
52
9ca19585 53 * Class::MOP::Package
54 - refactored entire class, this is now
55 the primary gateway between the metaclass
56 and the Perl 5 symbol table
57 - added many tests for this
6e57504d 58 - this class is now a subclass of
59 Class::MOP::Object
716c5765 60 - added some tests to reflect this
9ca19585 61
62 * Class::MOP::Class
63 - refactored all symbol table access to
64 use Class::MOP::Package methods instead
f0480c45 65
66 * Class::MOP::Module
67 - adding the $:version attribute in the bootstrap
68 so that Module has a version as an attribute
69 - see comment in Class::MOP for details
70 - added the $:authority attribute to this module
71 as well as an &identifier method, to bring us
72 ever closer to Perl 6 goodness
716c5765 73 - I have added $AUTHORITY to all the modules
74 - added tests for this
9ca19585 75
f0480c45 76 * Class::MOP::Instance
77 - added &deinitialize_slot for removing slots
78 from an instance
79 - added tests for this
9ca19585 80
81 * Class::MOP::Attribute
82 - added support for &deinitialize_slot for removing
83 slots from an instance
84 - added tests for this
85
1a09d9cc 860.31 Sat. July 15, 2006
87
b679e644 88 * Class::MOP::Class
89 - added &find_method_by_name to locate a method
90 anywhere within the class hierarchy
91
92 * Class::MOP::Attribute
93 - added &set_value and &get_value for getting
94 the value of the attribute for a particular
95 instance.
96
373a16ae 970.30 Wed. July 5, 2006
98 ---------------------------------------
99 This is the first version of Class::MOP
100 to introduce the immutable features which
101 will be used for optimizating the MOP.
102 This support should still be considered
103 experimental, but moving towards stability.
104 ---------------------------------------
e0a82090 105
373a16ae 106 * Created Class::MOP::Class::Immutable
be960ba1 107
373a16ae 108 * Created the Class::MOP::Package and
109 Class::MOP::Module classes to more
110 closely conform to Perl 6's meta-model
e0a82090 111
112 * Class::MOP::Class
113 - now inherits from Class::MOP::Module
114 - several methods moved to ::Module and
115 ::Package and now inherited
116 - added tests for this
c0cbf4d9 117
118 * Class::MOP::Instance
119 - added an is_inlinable method to allow other
120 classes to check before they attempt to optimize.
be960ba1 121 - added an inline_create_instance to inline
122 instance creation (of course)
123
2ba153a9 124 ** API CHANGE **
125 - the Class::MOP::Class::*_package_variable
126 methods are all now methods of Class::MOP::Package
127 and called *_package_symbol instead. This is
128 because they are now more general purpose symbol
129 table manipulation methods.
e0a82090 130
cdfaa4cc 1310.29_02 Thurs. June 22, 2006
132 ++ DEVELOPER RELEASE ++
df7b4119 133 * Class::MOP::Class
134 - small change in &create so that it behaves
135 properly when inherited
cdfaa4cc 136 - small fix to &clone_instance
df7b4119 137
667cecf3 1380.29_01 Fri. May 12, 2006
139 ++ DEVELOPER RELEASE ++
140 - This release works in combination with
141 Moose 0.09_01, it is a developer release
142 because it introduces a new instance
143 sub-protocol and has not yet been
144 optimized.
145
40483095 146 * Class::MOP::Class
147 - anon-classes are now properly garbage collected
148 - added tests for this
195f5bf8 149 - improved method modifier wrapping
40483095 150
2bab2be6 151 * Class::MOP::Instance
1becdfcc 152 - added new instance protocol
2bab2be6 153 - added tests for this
154 - changed all relevant modules and examples
155 - Class::MOP::Class
156 - Class::MOP::Attribute
157 - examples/*
158
1becdfcc 159 * metaclass
160 - you no longer need to specify the metaclass
161 itself, if it is not there, Class::MOP::Class
162 is just assumed
163 - updated tests for this
164
165 * examples/
166 - added ArrayBasedStorage example to show
167 instance storage using ARRAY refs instead of
168 HASH refs.
169 - added tests for this
170 - InsideOutClass is totally revised using the
171 new instance protocol
172 - added more tests for this
173
93b4e576 1740.26 Mon. April 24, 2006
e7f732e4 175 * Class::MOP::Class
176 - added find_attribute_by_name method
177 - added tests and docs for this
56a0b530 178 - some small optimizations
179
180 * Class::MOP::Attribute
181 - some small optimizations
e7f732e4 182
46666f33 1830.25 Thurs. April 20, 2006
587aca23 184 * Class::MOP::Class
185 - added create_anon_class for creating anonymous classes
186 - added tests for this
187 - added get_all_metaclasses, get_all_metaclass_names
188 and get_all_metaclass_instances method to allow
189 access to all the cached metaclass objects.
bd4e03f9 190 - attribute slot initialization is now the responsibility
191 of the attribute itself, and construct_instance now
192 delegates appropriately
193
194 * Class::MOP::Attribute
195 - attribute slot initialization is now the responsibility
196 of the attribute itself, so we added a method for it
197 called initialize_instance_slot
fed4cee7 198
199 * examples/
200 - adjusted all the examples to use the new attribute
201 initialize_instance_slot method
587aca23 202
1daaa2b2 2030.24 Tues. April 11, 2006
8c936afc 204 * Class::MOP::Class
205 - cleaned up how the before/after/around method
206 modifiers get named with Sub::Name
207
b9dfbf78 2080.23 Thurs. March 30, 2006
a977cf65 209 * Class::MOP::Class
210 - fixed the way attribute defaults are handled
211 during instance construction (bug found by chansen)
b9dfbf78 212
213 * Class::MOP::Attribute
214 - read-only accessors ('reader') will now die if
215 passed more than one argument (attempting to write
216 to them basically)
217 - added tests for this
218 - adjusted all /example files to comply
a977cf65 219
f9eba090 2200.22 Mon. March 20, 2006
0eff2c16 221 * Class::MOP::Class
222 - localized $@ in the *_package_variable functions
223 because otherwise, it does ugly things in Moose.
224 - added test case for this
225
1988e85e 2260.21 Wed. March 15, 2006
2f6d5412 227 * Class::MOP::Class
228 - fixed issue where metaclasses are reaped from
229 our cache in global destruction, and so are not
230 available in DESTORY calls
231
96ceced8 2320.20 Thurs. March 2, 2006
d3cb0d4a 233 - removed the dependency for Clone since
234 we no longer to deep-cloning by default.
a4258ffd 235
236 * Class::MOP::Method
96ceced8 237 - added &package_name, &name and
238 &fully_qualified_name methods, some of
a4258ffd 239 which were formerly private subs in
240 Class::MOP::Class
241
242 * Class::MOP::Method::Wrapped
243 - allows for a method to be wrapped with
244 before, after and around modifiers
245 - added tests and docs for this feature
d3cb0d4a 246
247 * Class::MOP::Class
58d75218 248 - improved &get_package_symbol
96ceced8 249 - &version and &superclasses now use it
a4258ffd 250 - methods are now blessed into Class::MOP::Method
251 whenever possible
a4258ffd 252 - added methods to install CLOS-style method modifiers
253 - &add_before_method_modifier
254 - &add_after_method_modifier
255 - &add_around_method_modifier
256 - added tests and docs for these
96ceced8 257 - added &find_next_method_by_name which finds the
258 equivalent of SUPER::method_name
d3cb0d4a 259
1c020571 2600.12 Thurs. Feb 23, 2006
d89c0fad 261 - reduced the dependency on B, no need to always
262 have the latest
263
1c020571 264 * examples/
265 - added docs to the C3 method dispatch order test
266 - fixed missing Algorithm::C3 dependency by making
267 the test skip if it is not installed
268
0dea7280 2690.11 Mon Feb. 20, 2006
f3f5bd34 270 * examples/
271 - added example of changing method dispatch order to C3
a27ae83f 272
273 * Class::MOP::Class
19d4b5b8 274 - changed how clone_instance behaves, it now only does a
275 shallow clone (see docs for more details)
a27ae83f 276 - added docs and tests
f3f5bd34 277
3bf7644b 2780.10 Tues Feb. 14, 2006
279 ** This release was mostly about writing more tests and
280 cleaning out old and dusty code, the MOP should now
281 be considered "ready to use".
282
22286063 283 - adding more tests to get coverage up a little higher,
284 mostly testing errors and edge cases.
285 - test coverage is now at 99%
aa448b16 286
287 * Class::MOP
288 - no longer optionally exports to UNIVERSAL::meta or
289 creates a custom metaclass generator, use the
290 metaclass pragma instead.
22286063 291
292 * Class::MOP::Class
293 - fixed a number of minor issues which came up in the
294 error/edge-case tests
295
296 * Class::MOP::Attribute
297 - fixed a number of minor issues which came up in the
298 error/edge-case tests
299
0b8eb325 300 * examples/
ea263060 301 - fixing the AttributesWithHistory example, it was broken.
663f8198 302
550d56db 3030.06 Thurs Feb. 9, 2006
677eb158 304 * metaclass
550d56db 305 - adding new metaclass pragma to make setting up the
677eb158 306 metaclass a little more straightforward
7b31baf4 307
308 * Class::MOP
309 - clean up bootstrapping to include more complete
310 attribute definitions for Class::MOP::Class and
311 Class::MOP::Attribute (accessors, readers, writers,
312 etc.) ... it is redundant, but is useful meta-info
313 to have around.
677eb158 314
99e5b7e8 315 * Class::MOP::Class
316 - fixing minor meta-circularity issue with &meta, it
317 is now more useful for subclasses
7b31baf4 318 - added &get_attribute_map as an accessor for the
319 hash of attribute meta objects
c9e77dbb 320 - &compute_all_applicable_attributes now just returns
321 the attribute meta-object, rather than the HASH ref
322 since all the same info can be gotten from the
323 attribute meta-object itself
324 - updated docs & tests to reflect
5f3c057a 325 - added &clone_instance method which does a deep clone
326 of the instance structure created by &construct_instance
327 - added docs & tests for this
550d56db 328 - added Clone as a dependency
5f3c057a 329 - added &new_object and &clone_object convience methods to
330 return blessed new or cloned instances
2a7575a6 331 - they handle Class::MOP::Class singletons correctly too
5f3c057a 332 - added docs & tests for this
2a7575a6 333 - cleaned up the &constuct_class_instance so that it behaves
334 more like &construct_instance (and managed the singletons too)
550d56db 335 - added the &check_metaclass_compatibility method to make sure
336 that metaclasses are upward and downward compatible.
337 - added tests and docs for this
5f3c057a 338
99e5b7e8 339 * examples/
340 - adjusting code to use the &Class::MOP::Class::meta
341 fix detailed above
677eb158 342 - adjusting code to use the metaclass pragma
99e5b7e8 343
aa9c883e 3440.05 Sat Feb. 4, 2006
2e41896e 345 * Class::MOP::Class
346 - added the &attribute_metaclass and &method_metaclass
351bd7d4 347 attributes which contain a metaclass name to use for
2e41896e 348 attributes/methods respectively
351bd7d4 349
350 * Class::MOP
351 - bootstrap additional attributes for Class::MOP::Class
2e41896e 352
353 * examples/
354 - adjusted the example code and tests to use the new
355 &attribute_metaclass feature of Class::MOP::Class
aa9c883e 356 - added new example:
357 - LazyClass
2e41896e 358
d7c2cbe3 3590.04 Fri Feb. 3, 2006
d6fbcd05 360 * Class::MOP::Class
361 - some documentation suggestions from #perl6
362
363 * Class::MOP::Attribute
364 - improved error messages
365
366 * examples/
367 - added new examples:
368 - AttributesWithHistory
d7c2cbe3 369 - ClassEncapsultedAttributes
343203ee 370
9ec169fe 3710.03 Fri Feb. 3, 2006
372 - converted to Module::Build instead of EU::MM
373
374 * Class::MOP::Attribute
375 - refactored method generation code
376 - attributes are now associated with class directly
377
f71f4295 378 * examples/
9ec169fe 379 - refactored the InsideOut example to take advantage
380 of the Class::MOP::Attribute refactoring
f71f4295 381 - changed example files to .pod files and hide thier
382 package names from PAUSE (I don't want to own these
383 namespaces really, they are just examples)
9ec169fe 384
a57c7fa2 3850.02 Thurs Feb. 2, 2006
386 - moving examples from t/lib/* to examples/*
387 - adding POD documentation to the examples
388
a2e85e6c 3890.01 Thurs Feb. 2, 2006
7c90a1a8 390 - Initial release