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