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