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