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