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