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