get_read_method and get_write_method + tests + POD
[gitmo/Class-MOP.git] / Changes
CommitLineData
7c90a1a8 1Revision history for Perl extension Class-MOP.
2
823a5d31 30.38
4 ~~ More documentation updates ~~
5 * Class::MOP::Package
6 - we now deal with stub methods properly
7 - added tests for this
b25109b1 8 * Class::MOP::Attribute
9 - added get_read_method and get_write_method
10 - added tests and POD for this
823a5d31 11
3dc99d93 120.37 Sat. March 10, 2007
448b6e55 13 ~~ Many, many documentation updates ~~
14
15 * Class::MOP
16 - added &load_class and &is_class_loaded
17 - added tests and docs for these
2367814a 18
9363ea89 19 * Class::MOP::Attribute
20 - default now checks the instance with defined to
21 avoid setting off bool-overloads (found by Carl Franks)
22
c23184fc 230.37_002
24 * /t
25 - bad name in a test, causing meaningless failuress.
26 No other changes.
27
280.37_001
29
30 ~~ GLOBAL CHANGES ~~
31 - All attribute names are now consistent and follow Perl 6
32 style (prefixed with the sigil, and ! as the twigil for
33 private attrs). This should not affect any code, unless
34 you broke encapsulation, in which case, it is your problem
35 anyway.
36
37 !! Class::MOP::Class::Immutable has been removed
38
39 * Class::MOP::Method::Constructor
40 - this has been moved out of Class::MOP::Class::Immutable
41 and is a proper subclass of Class::MOP::Method now.
42
43 * Class::MOP::Class
44 - this module now uses Class::MOP::Immutable for the
45 immutable transformation instead of
46 Class::MOP::Class::Immutable.
47
48 + Class::MOP::Immutable
49 - this module now controls the transformation from a mutable
50 to an immutable version of the class. Docs for this will
51 be coming eventually.
52
53
cdc1ecba 540.36 Sun. Nov. 5, 2006
a651e249 55 * Class::MOP::Class
56 - added a few 'no warnings' lines to keep annoying
57 (and meaningless) warnings from chirping during
58 global destruction.
0870928c 59
60 * Class::MOP
61 - some more bootstrapping is now done on the new
62 classes
63
64 * Class::MOP::Class::Immutable
65 *** API CHANGE ***
66 - constructor generation is now handled by
67 the Class::MOP::Method::Constructor class
68
69 * Class::MOP::Method::Constructor
70 - created this to handle constructor generation
71 in Class::MOP::Class::Immutable
72
73 * Class::MOP::Attribute
74 *** API CHANGE ***
75 - attributes now delegate to the
76 Class::MOP::Method::Accessor to generate
77 accessors
78
79 * Class::MOP::Method::Accessor
80 - all accessor generation functions from
81 Class::MOP::Attribute have been moved here
a651e249 82
80f00c79 830.35 Sat. Sept. 30, 2006
8745cf22 84
85 * scripts/class_browser.pl
86 - initial prototype of a class browser, more
87 on this to come. Comments and patches are
88 very much welcome.
b1897d4d 89
90 * Class::MOP
3e86c902 91 - All Class::MOP::* accessors are no longer
92 re-generated in the bootstrap, instead
6d2118a4 93 they are aliased from the originals
6d2118a4 94 - fixed tests to reflect
b1897d4d 95 - added Class::MOP::Method (and its subclasses)
96 to the bootstrap
97 - adjusted tests for this
86482605 98 - added the Class::MOP::Instance attributes
99 to the bootstrap
b1897d4d 100
101 * Class::MOP::Method
102 *** API CHANGE ***
103 - methods are no longer blessed CODE refs
104 but are actual objects which can be CODE-ified
105 - adjusted tests to compensate
86482605 106 - adjusted docs for this
b1897d4d 107
108 * Class::MOP::Class
109 - changed how methods are dealt with to
110 encapsulate most of the work into the
111 &get_method_map method
112 - made several adjustments for the change
113 in Class::MOP::Method
114 - &add_attribute now checks if you are adding
115 a duplicate name, and properly removes the
116 old one before installing the new one
117 - added tests for this
86482605 118 - adjusted docs for this
b1897d4d 119
120 * Class::MOP::Class::Immutable
121 - added caching of &get_method_map
122 - fixed issue with &get_package_symbol
123 - cleaned up the methods that die (patch by David Wheeler)
124
125 * Class::MOP::Package
126 - added filtering capabilities to
127 &list_all_package_symbols
128
a549ce50 1290.34 Sat. Aug. 26, 2006
c4260b45 130 * Class::MOP::Class
131 - added the %:methods attribute, which like
132 the $:version and such just actually goes
133 to the symbol table to get it's stuff.
134 However, it makes the MOP more complete.
88dd563c 135 ** API CHANGE **
136 - The &create method now requires that all
137 but the package name now is passed in as
138 named parameters. See docs for more info.
139 - updated docs and tests for this
c4260b45 140
141 * Class::MOP::Object
142 - added &dump method to easily Data::Dumper
143 an object
144
145 * Class::MOP
146 - cleaned up the initialization of attributes
147 which do not store things in the instance
148 - added the %:methods attribute definition to
149 the bootstrap
88dd563c 150
151 ~ lots of misc. test cleanup
c4260b45 152
56e8dd5d 1530.33 Sat. Aug. 19, 2006
be7677c7 154 * Class::MOP::Class
155 - moved the metaclass cache out of here
156 and it is now in Class::MOP itself.
56e8dd5d 157
158 * Class::MOP
159 - moved all the metaclass cache stuff here
160 - fixed all tests for this
be7677c7 161
148b4697 162 * Class::MOP::Attribute
163 - reference values (other than CODE refs)
164 are no longer allowed for defaults
165 - added tests for this
56dcfc1a 166
167 * Class::MOP::Package
168 - fixed an issue with perl 5.8.1 and how it deals
e3a2c885 169 with symbol tables. The namespace hash is now
170 always reloaded from the symbol table.
171
172 ~ lots of misc. documentation cleanup
1396f86b 173
716c5765 1740.32 Sat. Aug. 12, 2006
6e57504d 175 + added Class::MOP::Object so that the
176 metamodel is more complete (and closer
177 to what Perl 6 will probably be).
178
9ca19585 179 * Class::MOP::Package
180 - refactored entire class, this is now
181 the primary gateway between the metaclass
182 and the Perl 5 symbol table
183 - added many tests for this
6e57504d 184 - this class is now a subclass of
185 Class::MOP::Object
716c5765 186 - added some tests to reflect this
9ca19585 187
188 * Class::MOP::Class
189 - refactored all symbol table access to
190 use Class::MOP::Package methods instead
f0480c45 191
192 * Class::MOP::Module
193 - adding the $:version attribute in the bootstrap
194 so that Module has a version as an attribute
195 - see comment in Class::MOP for details
196 - added the $:authority attribute to this module
197 as well as an &identifier method, to bring us
198 ever closer to Perl 6 goodness
716c5765 199 - I have added $AUTHORITY to all the modules
200 - added tests for this
9ca19585 201
f0480c45 202 * Class::MOP::Instance
203 - added &deinitialize_slot for removing slots
204 from an instance
205 - added tests for this
9ca19585 206
207 * Class::MOP::Attribute
208 - added support for &deinitialize_slot for removing
209 slots from an instance
210 - added tests for this
211
1a09d9cc 2120.31 Sat. July 15, 2006
213
b679e644 214 * Class::MOP::Class
215 - added &find_method_by_name to locate a method
216 anywhere within the class hierarchy
217
218 * Class::MOP::Attribute
219 - added &set_value and &get_value for getting
220 the value of the attribute for a particular
221 instance.
222
373a16ae 2230.30 Wed. July 5, 2006
224 ---------------------------------------
225 This is the first version of Class::MOP
226 to introduce the immutable features which
227 will be used for optimizating the MOP.
228 This support should still be considered
229 experimental, but moving towards stability.
230 ---------------------------------------
e0a82090 231
373a16ae 232 * Created Class::MOP::Class::Immutable
be960ba1 233
373a16ae 234 * Created the Class::MOP::Package and
235 Class::MOP::Module classes to more
236 closely conform to Perl 6's meta-model
e0a82090 237
238 * Class::MOP::Class
239 - now inherits from Class::MOP::Module
240 - several methods moved to ::Module and
241 ::Package and now inherited
242 - added tests for this
c0cbf4d9 243
244 * Class::MOP::Instance
245 - added an is_inlinable method to allow other
246 classes to check before they attempt to optimize.
be960ba1 247 - added an inline_create_instance to inline
248 instance creation (of course)
249
2ba153a9 250 ** API CHANGE **
251 - the Class::MOP::Class::*_package_variable
252 methods are all now methods of Class::MOP::Package
253 and called *_package_symbol instead. This is
254 because they are now more general purpose symbol
255 table manipulation methods.
e0a82090 256
cdfaa4cc 2570.29_02 Thurs. June 22, 2006
258 ++ DEVELOPER RELEASE ++
df7b4119 259 * Class::MOP::Class
260 - small change in &create so that it behaves
261 properly when inherited
cdfaa4cc 262 - small fix to &clone_instance
df7b4119 263
667cecf3 2640.29_01 Fri. May 12, 2006
265 ++ DEVELOPER RELEASE ++
266 - This release works in combination with
267 Moose 0.09_01, it is a developer release
268 because it introduces a new instance
269 sub-protocol and has not yet been
270 optimized.
271
40483095 272 * Class::MOP::Class
273 - anon-classes are now properly garbage collected
274 - added tests for this
195f5bf8 275 - improved method modifier wrapping
40483095 276
2bab2be6 277 * Class::MOP::Instance
1becdfcc 278 - added new instance protocol
2bab2be6 279 - added tests for this
280 - changed all relevant modules and examples
281 - Class::MOP::Class
282 - Class::MOP::Attribute
283 - examples/*
284
1becdfcc 285 * metaclass
286 - you no longer need to specify the metaclass
287 itself, if it is not there, Class::MOP::Class
288 is just assumed
289 - updated tests for this
290
291 * examples/
292 - added ArrayBasedStorage example to show
293 instance storage using ARRAY refs instead of
294 HASH refs.
295 - added tests for this
296 - InsideOutClass is totally revised using the
297 new instance protocol
298 - added more tests for this
299
93b4e576 3000.26 Mon. April 24, 2006
e7f732e4 301 * Class::MOP::Class
302 - added find_attribute_by_name method
303 - added tests and docs for this
56a0b530 304 - some small optimizations
305
306 * Class::MOP::Attribute
307 - some small optimizations
e7f732e4 308
46666f33 3090.25 Thurs. April 20, 2006
587aca23 310 * Class::MOP::Class
311 - added create_anon_class for creating anonymous classes
312 - added tests for this
313 - added get_all_metaclasses, get_all_metaclass_names
314 and get_all_metaclass_instances method to allow
315 access to all the cached metaclass objects.
bd4e03f9 316 - attribute slot initialization is now the responsibility
317 of the attribute itself, and construct_instance now
318 delegates appropriately
319
320 * Class::MOP::Attribute
321 - attribute slot initialization is now the responsibility
322 of the attribute itself, so we added a method for it
323 called initialize_instance_slot
fed4cee7 324
325 * examples/
326 - adjusted all the examples to use the new attribute
327 initialize_instance_slot method
587aca23 328
1daaa2b2 3290.24 Tues. April 11, 2006
8c936afc 330 * Class::MOP::Class
331 - cleaned up how the before/after/around method
332 modifiers get named with Sub::Name
333
b9dfbf78 3340.23 Thurs. March 30, 2006
a977cf65 335 * Class::MOP::Class
336 - fixed the way attribute defaults are handled
337 during instance construction (bug found by chansen)
b9dfbf78 338
339 * Class::MOP::Attribute
340 - read-only accessors ('reader') will now die if
341 passed more than one argument (attempting to write
342 to them basically)
343 - added tests for this
344 - adjusted all /example files to comply
a977cf65 345
f9eba090 3460.22 Mon. March 20, 2006
0eff2c16 347 * Class::MOP::Class
348 - localized $@ in the *_package_variable functions
349 because otherwise, it does ugly things in Moose.
350 - added test case for this
351
1988e85e 3520.21 Wed. March 15, 2006
2f6d5412 353 * Class::MOP::Class
354 - fixed issue where metaclasses are reaped from
355 our cache in global destruction, and so are not
356 available in DESTORY calls
357
96ceced8 3580.20 Thurs. March 2, 2006
d3cb0d4a 359 - removed the dependency for Clone since
360 we no longer to deep-cloning by default.
a4258ffd 361
362 * Class::MOP::Method
96ceced8 363 - added &package_name, &name and
364 &fully_qualified_name methods, some of
a4258ffd 365 which were formerly private subs in
366 Class::MOP::Class
367
368 * Class::MOP::Method::Wrapped
369 - allows for a method to be wrapped with
370 before, after and around modifiers
371 - added tests and docs for this feature
d3cb0d4a 372
373 * Class::MOP::Class
58d75218 374 - improved &get_package_symbol
96ceced8 375 - &version and &superclasses now use it
a4258ffd 376 - methods are now blessed into Class::MOP::Method
377 whenever possible
a4258ffd 378 - added methods to install CLOS-style method modifiers
379 - &add_before_method_modifier
380 - &add_after_method_modifier
381 - &add_around_method_modifier
382 - added tests and docs for these
96ceced8 383 - added &find_next_method_by_name which finds the
384 equivalent of SUPER::method_name
d3cb0d4a 385
1c020571 3860.12 Thurs. Feb 23, 2006
d89c0fad 387 - reduced the dependency on B, no need to always
388 have the latest
389
1c020571 390 * examples/
391 - added docs to the C3 method dispatch order test
392 - fixed missing Algorithm::C3 dependency by making
393 the test skip if it is not installed
394
0dea7280 3950.11 Mon Feb. 20, 2006
f3f5bd34 396 * examples/
397 - added example of changing method dispatch order to C3
a27ae83f 398
399 * Class::MOP::Class
19d4b5b8 400 - changed how clone_instance behaves, it now only does a
401 shallow clone (see docs for more details)
a27ae83f 402 - added docs and tests
f3f5bd34 403
3bf7644b 4040.10 Tues Feb. 14, 2006
405 ** This release was mostly about writing more tests and
406 cleaning out old and dusty code, the MOP should now
407 be considered "ready to use".
408
22286063 409 - adding more tests to get coverage up a little higher,
410 mostly testing errors and edge cases.
411 - test coverage is now at 99%
aa448b16 412
413 * Class::MOP
414 - no longer optionally exports to UNIVERSAL::meta or
415 creates a custom metaclass generator, use the
416 metaclass pragma instead.
22286063 417
418 * Class::MOP::Class
419 - fixed a number of minor issues which came up in the
420 error/edge-case tests
421
422 * Class::MOP::Attribute
423 - fixed a number of minor issues which came up in the
424 error/edge-case tests
425
0b8eb325 426 * examples/
ea263060 427 - fixing the AttributesWithHistory example, it was broken.
663f8198 428
550d56db 4290.06 Thurs Feb. 9, 2006
677eb158 430 * metaclass
550d56db 431 - adding new metaclass pragma to make setting up the
677eb158 432 metaclass a little more straightforward
7b31baf4 433
434 * Class::MOP
435 - clean up bootstrapping to include more complete
436 attribute definitions for Class::MOP::Class and
437 Class::MOP::Attribute (accessors, readers, writers,
438 etc.) ... it is redundant, but is useful meta-info
439 to have around.
677eb158 440
99e5b7e8 441 * Class::MOP::Class
442 - fixing minor meta-circularity issue with &meta, it
443 is now more useful for subclasses
7b31baf4 444 - added &get_attribute_map as an accessor for the
445 hash of attribute meta objects
c9e77dbb 446 - &compute_all_applicable_attributes now just returns
447 the attribute meta-object, rather than the HASH ref
448 since all the same info can be gotten from the
449 attribute meta-object itself
450 - updated docs & tests to reflect
5f3c057a 451 - added &clone_instance method which does a deep clone
452 of the instance structure created by &construct_instance
453 - added docs & tests for this
550d56db 454 - added Clone as a dependency
5f3c057a 455 - added &new_object and &clone_object convience methods to
456 return blessed new or cloned instances
2a7575a6 457 - they handle Class::MOP::Class singletons correctly too
5f3c057a 458 - added docs & tests for this
2a7575a6 459 - cleaned up the &constuct_class_instance so that it behaves
460 more like &construct_instance (and managed the singletons too)
550d56db 461 - added the &check_metaclass_compatibility method to make sure
462 that metaclasses are upward and downward compatible.
463 - added tests and docs for this
5f3c057a 464
99e5b7e8 465 * examples/
466 - adjusting code to use the &Class::MOP::Class::meta
467 fix detailed above
677eb158 468 - adjusting code to use the metaclass pragma
99e5b7e8 469
aa9c883e 4700.05 Sat Feb. 4, 2006
2e41896e 471 * Class::MOP::Class
472 - added the &attribute_metaclass and &method_metaclass
351bd7d4 473 attributes which contain a metaclass name to use for
2e41896e 474 attributes/methods respectively
351bd7d4 475
476 * Class::MOP
477 - bootstrap additional attributes for Class::MOP::Class
2e41896e 478
479 * examples/
480 - adjusted the example code and tests to use the new
481 &attribute_metaclass feature of Class::MOP::Class
aa9c883e 482 - added new example:
483 - LazyClass
2e41896e 484
d7c2cbe3 4850.04 Fri Feb. 3, 2006
d6fbcd05 486 * Class::MOP::Class
487 - some documentation suggestions from #perl6
488
489 * Class::MOP::Attribute
490 - improved error messages
491
492 * examples/
493 - added new examples:
494 - AttributesWithHistory
d7c2cbe3 495 - ClassEncapsultedAttributes
343203ee 496
9ec169fe 4970.03 Fri Feb. 3, 2006
498 - converted to Module::Build instead of EU::MM
499
500 * Class::MOP::Attribute
501 - refactored method generation code
502 - attributes are now associated with class directly
503
f71f4295 504 * examples/
9ec169fe 505 - refactored the InsideOut example to take advantage
506 of the Class::MOP::Attribute refactoring
f71f4295 507 - changed example files to .pod files and hide thier
508 package names from PAUSE (I don't want to own these
509 namespaces really, they are just examples)
9ec169fe 510
a57c7fa2 5110.02 Thurs Feb. 2, 2006
512 - moving examples from t/lib/* to examples/*
513 - adding POD documentation to the examples
514
a2e85e6c 5150.01 Thurs Feb. 2, 2006
7c90a1a8 516 - Initial release