forgot test coverage stats
[gitmo/Class-MOP.git] / Changes
CommitLineData
7c90a1a8 1Revision history for Perl extension Class-MOP.
2
8745cf22 30.35 Sat. Sept. 23, 2006
4
5 * scripts/class_browser.pl
6 - initial prototype of a class browser, more
7 on this to come. Comments and patches are
8 very much welcome.
b1897d4d 9
10 * Class::MOP
6d2118a4 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
15 compile-time fast
16 - fixed tests to reflect
b1897d4d 17 - added Class::MOP::Method (and its subclasses)
18 to the bootstrap
19 - adjusted tests for this
86482605 20 - added the Class::MOP::Instance attributes
21 to the bootstrap
b1897d4d 22
23 * Class::MOP::Method
24 *** API CHANGE ***
25 - methods are no longer blessed CODE refs
26 but are actual objects which can be CODE-ified
27 - adjusted tests to compensate
86482605 28 - adjusted docs for this
b1897d4d 29
30 * Class::MOP::Class
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
35 in Class::MOP::Method
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
86482605 40 - adjusted docs for this
b1897d4d 41
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)
46
47 * Class::MOP::Package
48 - added filtering capabilities to
49 &list_all_package_symbols
50
a549ce50 510.34 Sat. Aug. 26, 2006
c4260b45 52 * Class::MOP::Class
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.
88dd563c 57 ** API CHANGE **
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
c4260b45 62
63 * Class::MOP::Object
64 - added &dump method to easily Data::Dumper
65 an object
66
67 * Class::MOP
68 - cleaned up the initialization of attributes
69 which do not store things in the instance
70 - added the %:methods attribute definition to
71 the bootstrap
88dd563c 72
73 ~ lots of misc. test cleanup
c4260b45 74
56e8dd5d 750.33 Sat. Aug. 19, 2006
be7677c7 76 * Class::MOP::Class
77 - moved the metaclass cache out of here
78 and it is now in Class::MOP itself.
56e8dd5d 79
80 * Class::MOP
81 - moved all the metaclass cache stuff here
82 - fixed all tests for this
be7677c7 83
148b4697 84 * Class::MOP::Attribute
85 - reference values (other than CODE refs)
86 are no longer allowed for defaults
87 - added tests for this
56dcfc1a 88
89 * Class::MOP::Package
90 - fixed an issue with perl 5.8.1 and how it deals
e3a2c885 91 with symbol tables. The namespace hash is now
92 always reloaded from the symbol table.
93
94 ~ lots of misc. documentation cleanup
1396f86b 95
716c5765 960.32 Sat. Aug. 12, 2006
6e57504d 97 + added Class::MOP::Object so that the
98 metamodel is more complete (and closer
99 to what Perl 6 will probably be).
100
9ca19585 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
6e57504d 106 - this class is now a subclass of
107 Class::MOP::Object
716c5765 108 - added some tests to reflect this
9ca19585 109
110 * Class::MOP::Class
111 - refactored all symbol table access to
112 use Class::MOP::Package methods instead
f0480c45 113
114 * Class::MOP::Module
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
716c5765 121 - I have added $AUTHORITY to all the modules
122 - added tests for this
9ca19585 123
f0480c45 124 * Class::MOP::Instance
125 - added &deinitialize_slot for removing slots
126 from an instance
127 - added tests for this
9ca19585 128
129 * Class::MOP::Attribute
130 - added support for &deinitialize_slot for removing
131 slots from an instance
132 - added tests for this
133
1a09d9cc 1340.31 Sat. July 15, 2006
135
b679e644 136 * Class::MOP::Class
137 - added &find_method_by_name to locate a method
138 anywhere within the class hierarchy
139
140 * Class::MOP::Attribute
141 - added &set_value and &get_value for getting
142 the value of the attribute for a particular
143 instance.
144
373a16ae 1450.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 ---------------------------------------
e0a82090 153
373a16ae 154 * Created Class::MOP::Class::Immutable
be960ba1 155
373a16ae 156 * Created the Class::MOP::Package and
157 Class::MOP::Module classes to more
158 closely conform to Perl 6's meta-model
e0a82090 159
160 * Class::MOP::Class
161 - now inherits from Class::MOP::Module
162 - several methods moved to ::Module and
163 ::Package and now inherited
164 - added tests for this
c0cbf4d9 165
166 * Class::MOP::Instance
167 - added an is_inlinable method to allow other
168 classes to check before they attempt to optimize.
be960ba1 169 - added an inline_create_instance to inline
170 instance creation (of course)
171
2ba153a9 172 ** API CHANGE **
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.
e0a82090 178
cdfaa4cc 1790.29_02 Thurs. June 22, 2006
180 ++ DEVELOPER RELEASE ++
df7b4119 181 * Class::MOP::Class
182 - small change in &create so that it behaves
183 properly when inherited
cdfaa4cc 184 - small fix to &clone_instance
df7b4119 185
667cecf3 1860.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
192 optimized.
193
40483095 194 * Class::MOP::Class
195 - anon-classes are now properly garbage collected
196 - added tests for this
195f5bf8 197 - improved method modifier wrapping
40483095 198
2bab2be6 199 * Class::MOP::Instance
1becdfcc 200 - added new instance protocol
2bab2be6 201 - added tests for this
202 - changed all relevant modules and examples
203 - Class::MOP::Class
204 - Class::MOP::Attribute
205 - examples/*
206
1becdfcc 207 * metaclass
208 - you no longer need to specify the metaclass
209 itself, if it is not there, Class::MOP::Class
210 is just assumed
211 - updated tests for this
212
213 * examples/
214 - added ArrayBasedStorage example to show
215 instance storage using ARRAY refs instead of
216 HASH refs.
217 - added tests for this
218 - InsideOutClass is totally revised using the
219 new instance protocol
220 - added more tests for this
221
93b4e576 2220.26 Mon. April 24, 2006
e7f732e4 223 * Class::MOP::Class
224 - added find_attribute_by_name method
225 - added tests and docs for this
56a0b530 226 - some small optimizations
227
228 * Class::MOP::Attribute
229 - some small optimizations
e7f732e4 230
46666f33 2310.25 Thurs. April 20, 2006
587aca23 232 * Class::MOP::Class
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.
bd4e03f9 238 - attribute slot initialization is now the responsibility
239 of the attribute itself, and construct_instance now
240 delegates appropriately
241
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
fed4cee7 246
247 * examples/
248 - adjusted all the examples to use the new attribute
249 initialize_instance_slot method
587aca23 250
1daaa2b2 2510.24 Tues. April 11, 2006
8c936afc 252 * Class::MOP::Class
253 - cleaned up how the before/after/around method
254 modifiers get named with Sub::Name
255
b9dfbf78 2560.23 Thurs. March 30, 2006
a977cf65 257 * Class::MOP::Class
258 - fixed the way attribute defaults are handled
259 during instance construction (bug found by chansen)
b9dfbf78 260
261 * Class::MOP::Attribute
262 - read-only accessors ('reader') will now die if
263 passed more than one argument (attempting to write
264 to them basically)
265 - added tests for this
266 - adjusted all /example files to comply
a977cf65 267
f9eba090 2680.22 Mon. March 20, 2006
0eff2c16 269 * Class::MOP::Class
270 - localized $@ in the *_package_variable functions
271 because otherwise, it does ugly things in Moose.
272 - added test case for this
273
1988e85e 2740.21 Wed. March 15, 2006
2f6d5412 275 * Class::MOP::Class
276 - fixed issue where metaclasses are reaped from
277 our cache in global destruction, and so are not
278 available in DESTORY calls
279
96ceced8 2800.20 Thurs. March 2, 2006
d3cb0d4a 281 - removed the dependency for Clone since
282 we no longer to deep-cloning by default.
a4258ffd 283
284 * Class::MOP::Method
96ceced8 285 - added &package_name, &name and
286 &fully_qualified_name methods, some of
a4258ffd 287 which were formerly private subs in
288 Class::MOP::Class
289
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
d3cb0d4a 294
295 * Class::MOP::Class
58d75218 296 - improved &get_package_symbol
96ceced8 297 - &version and &superclasses now use it
a4258ffd 298 - methods are now blessed into Class::MOP::Method
299 whenever possible
a4258ffd 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
96ceced8 305 - added &find_next_method_by_name which finds the
306 equivalent of SUPER::method_name
d3cb0d4a 307
1c020571 3080.12 Thurs. Feb 23, 2006
d89c0fad 309 - reduced the dependency on B, no need to always
310 have the latest
311
1c020571 312 * examples/
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
316
0dea7280 3170.11 Mon Feb. 20, 2006
f3f5bd34 318 * examples/
319 - added example of changing method dispatch order to C3
a27ae83f 320
321 * Class::MOP::Class
19d4b5b8 322 - changed how clone_instance behaves, it now only does a
323 shallow clone (see docs for more details)
a27ae83f 324 - added docs and tests
f3f5bd34 325
3bf7644b 3260.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".
330
22286063 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%
aa448b16 334
335 * Class::MOP
336 - no longer optionally exports to UNIVERSAL::meta or
337 creates a custom metaclass generator, use the
338 metaclass pragma instead.
22286063 339
340 * Class::MOP::Class
341 - fixed a number of minor issues which came up in the
342 error/edge-case tests
343
344 * Class::MOP::Attribute
345 - fixed a number of minor issues which came up in the
346 error/edge-case tests
347
0b8eb325 348 * examples/
ea263060 349 - fixing the AttributesWithHistory example, it was broken.
663f8198 350
550d56db 3510.06 Thurs Feb. 9, 2006
677eb158 352 * metaclass
550d56db 353 - adding new metaclass pragma to make setting up the
677eb158 354 metaclass a little more straightforward
7b31baf4 355
356 * Class::MOP
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
361 to have around.
677eb158 362
99e5b7e8 363 * Class::MOP::Class
364 - fixing minor meta-circularity issue with &meta, it
365 is now more useful for subclasses
7b31baf4 366 - added &get_attribute_map as an accessor for the
367 hash of attribute meta objects
c9e77dbb 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
5f3c057a 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
550d56db 376 - added Clone as a dependency
5f3c057a 377 - added &new_object and &clone_object convience methods to
378 return blessed new or cloned instances
2a7575a6 379 - they handle Class::MOP::Class singletons correctly too
5f3c057a 380 - added docs & tests for this
2a7575a6 381 - cleaned up the &constuct_class_instance so that it behaves
382 more like &construct_instance (and managed the singletons too)
550d56db 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
5f3c057a 386
99e5b7e8 387 * examples/
388 - adjusting code to use the &Class::MOP::Class::meta
389 fix detailed above
677eb158 390 - adjusting code to use the metaclass pragma
99e5b7e8 391
aa9c883e 3920.05 Sat Feb. 4, 2006
2e41896e 393 * Class::MOP::Class
394 - added the &attribute_metaclass and &method_metaclass
351bd7d4 395 attributes which contain a metaclass name to use for
2e41896e 396 attributes/methods respectively
351bd7d4 397
398 * Class::MOP
399 - bootstrap additional attributes for Class::MOP::Class
2e41896e 400
401 * examples/
402 - adjusted the example code and tests to use the new
403 &attribute_metaclass feature of Class::MOP::Class
aa9c883e 404 - added new example:
405 - LazyClass
2e41896e 406
d7c2cbe3 4070.04 Fri Feb. 3, 2006
d6fbcd05 408 * Class::MOP::Class
409 - some documentation suggestions from #perl6
410
411 * Class::MOP::Attribute
412 - improved error messages
413
414 * examples/
415 - added new examples:
416 - AttributesWithHistory
d7c2cbe3 417 - ClassEncapsultedAttributes
343203ee 418
9ec169fe 4190.03 Fri Feb. 3, 2006
420 - converted to Module::Build instead of EU::MM
421
422 * Class::MOP::Attribute
423 - refactored method generation code
424 - attributes are now associated with class directly
425
f71f4295 426 * examples/
9ec169fe 427 - refactored the InsideOut example to take advantage
428 of the Class::MOP::Attribute refactoring
f71f4295 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)
9ec169fe 432
a57c7fa2 4330.02 Thurs Feb. 2, 2006
434 - moving examples from t/lib/* to examples/*
435 - adding POD documentation to the examples
436
a2e85e6c 4370.01 Thurs Feb. 2, 2006
7c90a1a8 438 - Initial release