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