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