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