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