Added tests or UNIVERSAL methods
[gitmo/Class-MOP.git] / Changes
CommitLineData
7c90a1a8 1Revision history for Perl extension Class-MOP.
b817e248 2
ed337aad 3
4 * Class::MOP::Attribute
5 - Allow default values to be Class::MOP::Methods.
6 (Florian Ragwitz)
7 - Test the above. (Rhesa Rozendaal)
8 - Tweak original commit so the intent matches the accepted behavior
9 (Nicholas Perez)
10
b3813a8c 11 * Class::MOP
12 - Localize $SIG{__DIE__} inside _try_load_one_class (Sartak)
13
462ed2c0 14 * Class::MOP::Class
15 - Add direct_subclasses method (Sartak)
16 - Tests for subclasses and direct_subclasses (Sartak)
0c858be6 17 - subname is no longer used unconditionally in add_method, but only if
18 the code reference's name is '__ANON__' (nothingmuch)
462ed2c0 19
63b4b81a 200.84 Tue, May 12, 2009
4cd537dd 21 * Makefile.PL
22 - Depend on Text::Exception 0.27 to avoid failing tests ond old
23 versions (rafl)
24
42a3fae5 25 * Class::MOP
d9d8a21b 26 - Made is_class_loaded a little stricter. It was reporting that
27 a class was loaded if it merely had an @ISA variable in its
28 stash. Now it checks that the @ISA var has elements in it.
d5ed91ad 29 - Deprecate in_global_destruction and subname re-exporting
30 (perigrin & Sartak)
5aecafee 31
42a3fae5 32 * Class::MOP::Class
5aecafee 33 - Explicitly use Devel::GlobalDestruction and Sub::Name
34 (perigrin)
35
26159d55 36 * Class::MOP::Package
37 - Disable prototype mismatch warnings for add_package_symbol.
38 (Florian Ragwitz)
39
388a0c73 400.83 Mon, April 27, 2009
11b6ae43 41 * Class::MOP::Class
42 - Fix segfault when calling get_method_map on a metaclass for an empty
43 package (doy)
44
8dd10256 450.82_02 Fri, April 24, 2009
ab07b752 46 * Class::MOP::Method::Inlined
47 - Don't inline if the expected method is not defined at all (happens with
48 e.g. Moose::Object::_new is the expected method due to an overridden
49 name)
bfaf96f4 50 * Tests
51 - Some tests were trying to load Class::MOP::Immutable, which
52 was removed in 0.82_01.
53
a2619b52 540.82_01 Thu, April 23, 2009
abf9add2 55 * Class::MOP::Immutable (and others)
56 - Refactor the immutability system to use a pre-defined class
57 for the immutable metaclass of Class::MOP::Class::Immutable::$class
58 - Rather than generating methods into this class every time, use
59 a Trait (basic mixin) to supply the cached methods
60 - Remove the hack that returns the mutable metaclass for
61 metacircularity in order to provide consistent meta-metaclasses
62 for the Moose compatibility handling code
f56e2a2e 63 (mst broke it, nothingmuch fixed it)
a2619b52 64
a9a053ab 650.82 Mon, April 20, 2009
6630c615 66 * Various
23378ff6 67 - The deprecation wrappers for some renamed methods were not
6630c615 68 passing arguments to the new method. (nothingmuch)
69
3fae1320 70 * Class::MOP::Immutable
71 - Warn during immutablization if the local class provides its own
72 constructor, to parallel the warning in Moose when a superclass
73 provides its own constructor (doy)
74
a2baa8d4 750.81 Tue, April 7, 2009
6e5d17d2 76 * Class::MOP
77 * Class::MOP::Class
78 * Class::MOP::Instance
79 * Class::MOP::Attribute
80 * Class::MOP::Method::Accessor
81 * Class::MOP::Method::Constructor
a2baa8d4 82 - Include stack traces in the deprecation warnings introduced in
83 0.80_01. (Florian Ragwitz)
6e5d17d2 84
85 * MOP.xs
a2baa8d4 86 - Avoid c compiler warnings by declaring some unused function
87 arguments. (Florian Ragwitz)
6e5d17d2 88
93bd804c 890.80_01 Sun, April 5, 2009
72bc0a47 90 * Makefile.PL
91 - Make sure to preserve any compiler flags already defined in
92 Config.pm. Patch by Vincent Pit. RT #44739.
93
47ce35ba 94 * Many methods have been renamed with a leading underscore, and a
95 few have been deprecated entirely. The methods with a leading
96 underscore are consider "internals only". People writing
97 subclasses or extensions to Class::MOP should feel free to
98 override them, but they are not for "public" use.
d0454293 99
100 - Class::MOP::Class
101 - construct_class_instance => _construct_class_instance (use new_object)
102 - construct_instance => _construct_instance (use new_object)
103 - check_metaclass_compatibility => _check_metaclass_compatibility
104 - create_meta_instance => _create_meta_instance (use get_meta_instance)
105 - clone_instance => _clone_instance (use clone_object)
106 - compute_all_applicable_methods is deprecated, use get_all_methods
107 - compute_all_applicable_attributes is deprecated, use get_all_attributes
108
109 - Class::MOP::Instance
110 - bless_instance_structure is deprecated and will be removed
111 in a future release
112
113 - Class::MOP::Module
114 - create has been renamed to _instantiate_module. This method
115 does not construct an object, it evals some code that
116 creates the relevant package in Perl's symbol table.
117
118 - Class::MOP::Method::Accessor
119 - initialize_body => _initialize_body (this is always called
120 when an object is constructed)
121 - /(generate_.*_method(?:_inline)?)/ => '_' . $1
122
123 - Class::MOP::Method::Constructor
124 - initialize_body => _initialize_body (this is always called
125 when an object is constructed)
126 - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
127 - attributes => _attributes
128 - meta_instance => _meta_instance
129
416d180f 1300.80 Wed, April 1, 2009
164bf00b 131 * Class::MOP::*
86c265e1 132 - Call user_class->meta in fewer places, with the eventual goal
133 of allowing the user to rename or exclude ->meta
386655ca 134 altogether. Instead uses Class::MOP::class_of. (Sartak)
164bf00b 135
136 * Class::MOP
137 - New class_of function that should be used to retrieve a
86c265e1 138 metaclass. This is unlike get_metaclass_by_name in that it
139 accepts instances, not just class names. (Sartak)
164bf00b 140
44da14be 141 * Class::MOP
86c265e1 142 - load_first_existing_class didn't actually load the first
143 existing class; instead, it loaded the first existing and
144 compiling class. It now throws an error if a class exists (in
145 @INC) but fails to compile. (hdp)
44da14be 146
ffd09845 147 * Class::MOP
86c265e1 148 * Class::MOP::Class
ffd09845 149 - we had some semi-buggy code that purported to provide a
86c265e1 150 HAS_ISAREV based on whether mro had get_isarev (due to an
151 oversight, it always returned 1). Since mro and MRO::Compat
152 have always had get_isarev, HAS_ISAREV was pointless. This
153 insight simplified the subclasses method by deleting the
154 pure-perl fallback. HAS_ISAREV is now deprecated. (Sartak)
ffd09845 155
d7fe2508 1560.79 Fri, March 29, 2009
157 * No changes from 0.78_02.
158
ee32b2fa 1590.78_02 Thu, March 26, 2009
2c1f5348 160 * Class::MOP::Class
ea501fb6 161 * Class::MOP::Immutable
162 - A big backwards-incompatible refactoring of the Immutable API,
8e374ce5 163 and the make_immutable/make_mutable pieces of the Class
164 API. The core __PACKAGE__->meta->make_immutable API remains
165 the same, however, so this should only affect the most
166 guts-digging code.
ea501fb6 167
f8fa5c25 168 * XS code
169 - The XS code used a macro, XSPROTO, that's only in 5.10.x. This
170 has been fixed to be backwards compatible with 5.8.x.
c5f65de9 171
172 * Class::MOP::Class
173 - Add a hook for rebless_instance_away (Sartak)
174 - Use blessed instead of ref to get an instance's class name
175 in rebless_instance. (Sartak)
f8fa5c25 176
1770.78_01 Wed, March 18, 2009
178 * Class::MOP::*
179 - Revised and reorganized all of the API documentation. All
180 classes now have (more or less) complete API documentation.
181
ea501fb6 182 * Class::MOP::Class
2c1f5348 183 * Class::MOP::Instance
184 - Reblessing into a package that supports overloading wasn't
185 properly adding overload magic to the object due to a bug
186 in (at least) 5.8.8. We now use $_[1] directly which seems
187 to set the magic properly. (Sartak)
9e9a0c94 188
45a183fb 189 * Class::MOP::Attribute
190 - The process_accessors method is now private. A public alias
191 exists (and will stick around for a few releases), but it
192 warns that calling the public method is deprecated.
193
0242e3f9 194 * Class::MOP::Method::Generated
195 - Removed the new and _new methods, since this is an abstract
196 base class, and all existing subclasses implement their own
197 constructors.
198
4e1aac01 199 * MOP.xs
200 - Stop is_class_loaded from thinking a class is loaded if it
201 only has an empty GV (Florian Ragwitz).
9e9a0c94 202 - Add a test for this (Yappo).
029b8969 203 - Refactor get_all_package_symbols to allow short-circuiting
204 (Florian Ragwitz).
9e9a0c94 205 - Use this in is_class_loaded (Florian Ragwitz).
029b8969 206 - Stop segfaulting when trying to get the name from a sub that's
207 still being compiled (Florian Ragwitz).
9e9a0c94 208 - Add tests for this (Florian Ragwitz).
d90a8e8f 209 - Prefix all public symbols with "mop_" (Florian Ragwitz).
ef7d3a1d 210 - Clean up and simplify prehashing of hash keys (Florian Ragwitz).
211 - Simplify creating simple xs reader methods (Florian Ragwitz).
4052ab27 212 - Make everything compile with c++ compilers (Florian Ragwitz).
08f3791a 213 - Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
9e9a0c94 214
029b8969 215 * Tests
216 - Remove optional test plans for tests depending on Sub::Name as
90bd72aa 217 we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
2c1f5348 218
ef7d3a1d 219 * Makefile.PL
220 - Rebuild all c code if mop.h has changed (Florian Ragwitz)
221
eca95e04 2220.78 Mon, February 23, 2009
47e735e0 223 * No changes from 0.77_01
eca95e04 224
d5f6699d 2250.77_01 Sun, February 22, 2009
4bfa5ddb 226 * Everything
227 - This package now requires its XS components. Not using
228 Sub::Name lead to different behavior and bugginess in the pure
d5f6699d 229 Perl version of the code. A Moose test would fail when run
230 against the pure Perl version of this code.
231
7ebb7bed 232 * Class::MOP::Instance
d5f6699d 233 - The inline_* methods now quote attribute names themselves, and
234 don't expect to receive a quoted value.
235
4bfa5ddb 236
8f3fba9b 2370.77 Sat, February 14, 2009
9c1dd83f 238 * MOP.xs
239 - Avoid assertion errors on debugging perls in is_class_loaded
240 (Florian Ragwitz)
241
3079a90e 242 * Class::MOP
243 - Fixed various corner cases where is_class_loaded incorrectly
244 returned true for a class that wasn't really loaded. (Dave
245 Rolsky)
246
668df632 247 * Class::MOP::Class
248 - Add get_all_method_names (Sartak)
9c1dd83f 249 - Add a wrapped_method_metaclass attribute (Florian Ragwitz)
668df632 250
a4bb3172 251 * Class::MOP::Package
c3c1917f 252 - Disable deprecated get_all_package_symbols in list
253 context. (Florian Ragwitz)
254
255 * Makefile.PL
256 - Make sure we generate a BSD-compatible Makefile (Florian
a4bb3172 257 Ragwitz)
258
8fd32374 259 * Class::MOP::Class
c5c8a954 260 - The misspelled "check_metaclass_compatability" method we've
8fd32374 261 kept around for backwards compat_i_bility will be removed in a
262 near future release. You've been warned.
263
8f3fba9b 2640.76 Thu, January 22, 2009
0b305028 265 * Class::MOP::Method::Generated
266 - Added new private methods to support code generation, which
267 are being used by Moose and can be used by MooseX
268 authors. (mst)
269 - Generated methods are now generated with a #line directive
270 reflecting the source of the generated method. (nothingmuch)
271
272 * Class::MOP::Class
273 - Clarified documentation of methods that return
274 Class::MOP::Method objects. (doy)
275
276 * Class::MOP
277 - Clarified documentation of the metaclass cache methods. (Sartak)
278
89f74416 279 * Tests
280 - Add test showing how the xs Class::MOP::is_class_loaded can
281 be made to operate differently to the pure perl version (t0m)
282
a0497979 2830.75 Wed, December 31, 2008
d89108ab 284 * Class::MOP::Class
285 - A class that was made immutable and then mutable could end up
286 sharing an immutable transformer object
287 (Class::MOP::Immutable) with other classes, leading to all
288 sorts of odd bugs. Reported by t0m. (Dave Rolsky)
289
c16a3087 2900.74 Tue, December 25, 2008
d14e06c3 291 * MOP.xs
292 - Add an xs implementation of Class::MOP::is_class_loaded (closes
293 RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
294 - Changed internals to make prehashing of hash keys easier and less
295 error-prone. (Florian Ragwitz)
296 * Class::MOP::Class
297 - Fix documentation to show that around modifiers happen on both
c6d9b1ff 298 sides of the modified method. (Dave Rolsky)
d14e06c3 299
2b5fafa1 3000.73 Tue, December 16, 2008
c0757d65 301 * MOP.xs
2b5fafa1 302 - Don't use Perl_mro_meta_init. It's not part of the public perl
303 api. Fixes failures to build on Win32 (RT #41750). (Florian
304 Ragwitz)
351e5029 305 * t/082_get_code_info.t
2b5fafa1 306 - Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
307 munger anonymous subs when under -d and so making the tests
308 succeed in that case.
351e5029 309
8704ee6d 3100.72 Mon, December 8, 2008
6a6f7a2f 311 * Class::MOP::Package
312 - Pass options to _new, so subclass' attributes can be
313 initialized (Sartak)
aa906e42 314 * Class::MOP::Method
adb2b128 315 - In the docs, indicate that package_name and name are required
316 when calling ->wrap (Stefan O'Rear)
6a6f7a2f 317
6b5ac420 3180.71_02 Fri, December 5, 2008
62a0a0f3 319 * Class::MOP::Immutable
320 - Added a new attribute, inlined_constructor, which is true if
321 the constructor was inlined.
fdc6771b 322 * Class::MOP::Package
323 - Make get_all_package_symbols return a hash ref in scalar
324 context and deprecate calling it in list context with a
325 warning. (Florian Ragwitz)
326 * MOP.xs
327 - Various improvements and refactoring, making things more robust and
328 easier to maintain. (Florian Ragwitz)
62a0a0f3 329
34147f49 3300.71_01 Wed, December 3, 2008
25a5f083 331 * Class::MOP::Method
332 - Add an "execute" method to invoke the body so
333 we can avoid using the coderef overload (Sartak)
41885bab 334 * Class::MOP::Immutable
9ec62360 335 - When we memoize methods, get their results lazily
336 to remove some compile-time cost (Sartak)
41885bab 337 - Small speedup from eliminating several method
338 calls (Sartak)
05e183d1 339 * Class::MOP::Class
340 - Some small internal tweaks to try to reduce the number of
341 times we call get_method_map when bootstrapping the MOP. This
342 might make loading Class::MOP (and Moose) a little
343 faster. (Dave Rolsky)
52e5f955 344 - Implemented an optional XS version of get_method_map. Mostly
345 taken from a patch by Goro Fuji (rt.cpan.org #41080), with
346 help form Florian Ragwitz. (Dave Rolsky)
7ef2f4b7 347 - Make the behaviour of of get_all_package_symbols (and
348 therefore get_method_map) consistent for stub methods. Report
349 and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
25a5f083 350
96185d43 3510.71 Wed November 26, 2008
d652fbd5 352 * Class::MOP::Class
353 * Class::MOP::Module
354 - Actual package creation has moved upward from
355 Class to Module so that Moose roles can share
356 the code (Sartak)
357
88b8ac17 3580.70_01 Mon, November 19, 2008
359 * Class::MOP
360 - Fixes for failures with blead (Florian Ragwitz)
361 - Silenced compiler warnings (Florian Ragwitz)
362
3630.70 Fri, November 14, 2008
7329b9e2 364 * Class::MOP
365 - Fixed an odd corner case where the XS version of
9b1760fc 366 get_all_package_symbols could cause a segfault. This only
7329b9e2 367 happened with inlined constants in Perl 5.10.0 (Florian
368 Ragwitz)
7329b9e2 369
52c685d3 3700.69 Fri, November 7, 2008
b88aa2e8 371 * Class::MOP::Method::Wrapped
372 - Added introspection methods for method modifiers (Dave Rolsky)
373
374
4a9e02e8 3750.68 Fri October 24, 2008
dfbc4d4c 376 * Class::MOP
377 - Make load_class require by file name instead of module name.
378 This stops confusing error messages when loading '__PACKAGE__'.
379 (Florian Ragwitz)
5a24cf8a 380 - Add load_one_class_of function to enable you to load one of a
381 list of classes, rather than having to call load_class multiple
382 times in an eval. (t0m)
dfbc4d4c 383
5f5ee28a 3840.67 Tue October 14, 2008
2e7eb96b 385 * Class::MOP::Class
386 - Call a method on the class after setting the superclass list
387 so that we can get Perl to detect cycles before MRO::Compat
388 spirals into an infinite loop (sartak)
389 - Reported by Schwern, [rt.cpan.org #39001]
34d04967 390 - In create(), pass unused options on to initialize()
391 - added test for this
2e7eb96b 392
34d04967 3930.66 Sat September 20, 2008
fe05cbbe 394 !! This release has an incompatible change regarding !!
395 introspection of a class's method with Class::MOP::Class !!
396
9e9e6b8f 397 * Tests and XS
398 - We (us maintainers) now run all tests with XS and then without
399 XS, which should help us catch skew between the XS/pure Perl
e073e667 400 code. (Dave Rolsky)
9e9e6b8f 401
91b73829 402 * Class::MOP::Class
fe05cbbe 403 ! The alias_method method has been deprecated. It now simply
1190621f 404 calls add_method instead. There is no distinction between
405 aliased methods and "real" methods.
fe05cbbe 406
407 This means that methods added via alias_method now show up as
7143219b 408 part of the class's method list/map. This is a backwards
fe05cbbe 409 incompatible change, but seems unlikely to break any
410 code. Famous last words. (Dave Rolsky)
91b73829 411
155f0cba 412 * Class::MOP::Class
413 - Fixed the spelling of "compatibility", but we still have a
414 "check_metaclass_compatability" method for backwards
415 compatibility.
9e9e6b8f 416
94278c1b 4170.65 Mon September 1, 2008
418 For those not following the series of dev releases, the changes
8b9106cf 419 from 0.64 from 0.65 can mostly be summed up as a lot performance
94278c1b 420 improvements by nothingmuch, including new optional XS versions of
421 some methods. Also, Class::MOP now works _without_ any XS modules,
422 for sad systems without a compiler.
423
988fb42e 424 * Class::MOP::Method
425 - Added name and package_name XS accessors, and make sure all
426 the XS and Perl versions work the same way. (Dave Rolsky)
427
428 * MOP.xs
429 - The XS versions of various methods just returned undef when
430 called class methods, rather than dying like the pure Perl
431 versions. (Dave Rolsky)
432
13ac653a 4330.64_07 Fri August 29, 2008
400982e3 434 * Class::MOP
13ac653a 435 - Silenced warnings that managed to break Moose tests when XS
436 was loaded. (Dave Rolsky)
437 - Some XS versions of methods were ignored because of typos in
438 MOP.xs. (Dave Rolsky)
400982e3 439
13ac653a 4400.64_06 Mon August 25, 2008
9457b596 441 * Class::MOP (MOP.xs)
442 - Another MS VC++ fix, cannot declare a variable in the middle
443 of a scope (Taro Nishino).
444
4450.64_05 Sun August 24, 2008
2a755fe8 446 * Class::MOP
447 - None of the dev releases actually loaded the XS properly, but
448 we silently fell back to the pure Perl version of the
449 code. (Dave Rolsky)
450
451 * Class::MOP (MOP.xs)
452 - Replaced some code that used functions not available on Visual
453 C++ with some Perl XS API bits (Dave Rolsky).
454
f65af096 4550.64_04 Sat August 23, 2008
9ebc265d 456 * Class::MOP::Class
f65af096 457 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
458
459 * pod.t and pod_coveraget.t
460 - These are no longer shipped with the tarball because of bogus
461 failures from CPAN testers. (Dave Rolsky)
9ebc265d 462
df7077cd 4630.64_03 Thu August 21, 2008
464 * Class::MOP::Package
465 - Some (legit) code was misparsed by earlier 5.8.x
466 releases. (nothingmuch)
467
468 * Class::MOP
469 - Fix a constant in void context warning (nothingmuch)
470
09ed1ec5 4710.64_02 Thu August 21, 2008
64c591d3 472 * Makefile.PL and Class::MOP
4dde2f23 473 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
474
475 * Makefile.PL
476 - Add missing prereqs that got lost in the switch away from
477 Module::Install.
64c591d3 478
09ed1ec5 479 * Class::MOP::Instance
480 - New method - get_all_attributes (nothingmuch)
481
4820.64_01 Wed August 20, 2008
f125b31e 483 * Makefile.PL
484 - We now check to see if you have a compiler. If you don't, the
485 module installs without some XS bits, but will work the same
486 as with XS. This should make it easier to install on platforms
487 without a compiler (like Windows). (Dave Rolsky)
2e5c1a3f 488
40b3c18f 489 * many modules
7f799c13 490 - Perl 6 style attribute naming replaced with sane style ('methods', not
491 '%!methods'). These changes should not impact any existing API uses.
492 (nothingmuch).
493
494 * many modules
40b3c18f 495 - Quite a number of optimizations based on profiling, including
496 allowing constructors to take hash references instead of
497 hashes, duplicating some frequently used code in XS, and
498 making constructors immutable. These changes should not impact
499 any existing API uses. (nothingmuch)
500
7f799c13 501 * Many modules
502 - Constructors now respect the meta attributes of their subclasses,
503 facilitating MOP extensibility. More related changes will happen in the
504 next several releases. (nothingmuch)
505
40b3c18f 506 * Class::MOP::Class
7f799c13 507 - New method - get_all_methods, replaces the deprecated
508 compute_all_applicable_methods. get_all_attributes provided for
509 consistency (nothingmuch)
510 - New method - wrap_method was refactored out of get_method_map
511 (nothingmuch)
512 - New API for meta instance invalidation - invalidate_meta_instance,
513 invalidate_meta_instances, add_dependent_meta_instance,
514 remove_dependent_meta_instance, called automatically when attribute
515 definitions change and allows notification of dependent subclasses.
516 (nothingmuch)
40b3c18f 517
7202116b 5180.64 Sun August 3, 2008
84bc89b3 519 * Class::MOP::Immutable
7202116b 520 - fixing subtle edge case in immutable when you
84bc89b3 521 call ->meta (stevan)
7202116b 522 - clean up option processing (nothingmuch)
523
524 * Class::MOP::Instance
525 - inlined initialize slot didn't match
526 non-inlined (nothingmuch)
84bc89b3 527
f079b1eb 5280.63 Mon July 7, 2008
07940968 529 * Class::MOP
530 - load_class will initialize a metaclass even if
531 the class is already loaded (sartak)
532 - load_class now returns the metaclass instance
533 instead of just 1 (sartak)
6e1c8b63 534
f079b1eb 535 * elsewhere
536 - better error messages (sartak and Dave Rolsky)
537
ebce5539 5380.62 Wed June 18, 2008
1377b506 539 - in is_class_loaded, recognize scalar references (as opposed to globs) in
540 the symbol table as methods (these are optimized constant subs)
541
70ad0655 5420.61 Fri. June 13, 2008
543 - Okay, lets give this another try and see if PAUSE
544 recognizes it correct this time.
a023763e 545
5460.60 Thurs. Jun 12, 2008
809a26fc 547 - Fixed a version number issue by bumping all modules
548 to 0.60.
8c5cc782 549
5500.59 Thurs. Jun 12, 2008
d1dba7a1 551 !! Several fixes resulting in yet another 25-30% speedup !!
9b522fc4 552
553 * Class::MOP::Class
554 - now stores the instance of the instance
555 metaclass to avoid needless recomputation
8b49a472 556 and deletes it when the cache is blown
119f3a92 557 - introduce methods to query Class::MOP::Class for
558 the options used to make it immutable as well as
559 the proper immutable transformer. (groditi)
8b49a472 560
561 * Class::MOP::Package
562 - {add, has, get, remove}_package_symbol all
563 now accept a HASH ref argument as well as the
564 string. All internal usages now use the HASH
565 ref version.
f6dc69d2 566
567 * Class::MOP
568 - MOP.xs does sanity checks on the coderef
569 to avoid a segfault
26fcef27 570 - is_class_loaded check now uses code that
571 was improved in Moose's ClassName type
ab5e2f48 572 check (Sartak)
573 - nonsensical (undef, empty, reference) class
574 names now throw a more direct error in
575 load_class (Sartak)
3f7759c1 576 - tests for this and other aspects of
577 load_class (Sartak)
9b522fc4 578
579 * Class::MOP
580 Class::MOP::Class
581 Class::MOP::Method
582 Class::MOP::Method::Wrapped
583 Class::MOP::Attribute
584 - switched usage of reftype to ref because
585 it is much faster
586
352c364f 5870.58 Thurs. May 29, 2008
62781d9f 588 (late night release engineering)--
589
590 - fixing the version is META.yml, no functional
591 changes in this release
592
de0f9e1c 5930.57 Wed. May 28, 2008
d1dba7a1 594 !! Several speedups resulting in 20-25% speedups !!
de0f9e1c 595 || (thanks to konobi, groditi, mst & CataMoose) !!
596
ae234dc6 597 * Class::MOP::Class
598 - made get_method_map use list_all_package_symbols
599 instead of manually grabbing each symbol
de0f9e1c 600 - streamlining &initialize somewhat, since it gets
601 called so much
ae234dc6 602
603 * Class::MOP::Package
604 - made {get, has}_package_symbol not call
605 &namespace so much
de0f9e1c 606 - inlining a few calls to &name with
607 direct HASH access key access
ae234dc6 608 - added get_all_package_symbols to fetch
609 a HASH of items based on a type filter
610 similar to list_all_package_symbols
611 - added tests for this
612
32202ce2 613 * Class::MOP::Method
614 Class::MOP::Method::Constructor
615 Class::MOP::Method::Generated
616 Class::MOP::Method::Accessor
617 - added more descriptive error message to help
618 keep people from wasting time tracking an error
47e20ba2 619 that is easily fixed by upgrading.
32202ce2 620
d1dba7a1 621 * Class::MOP::Immutable
622 - Don't inline a destructor unless the user actually
623 needs one
624 - added tests for this
625
b4009dc1 6260.56 Saturday, May 24, 2008
11b56828 627 * Class::MOP
628 - we now get the &check_package_cache_flag
629 function from MRO::Compat
d7d3f3cb 630 - All XS based functionality now has a
631 Pure Perl alternative
6c34db07 632 - the CLASS_MOP_NO_XS environment variable
d7d3f3cb 633 can now be used to force non-XS versions
6c34db07 634 to always be used
11b56828 635
9e517e01 636 * Class::MOP::Attribute
637 - add has_read_method and has_write_method
d7d3f3cb 638 - get_{read,write}_method_ref now wraps the
def5c0b5 639 anon-sub ref in the method metaclass when
640 possible
641 - added tests for this
d7d3f3cb 642
5f3efd66 643 * Class::MOP::Immutable
d7d3f3cb 644 - added the ability to "wrap" methods when
5f3efd66 645 making the class immutable
d7d3f3cb 646
5f3efd66 647 * Class::MOP::Class
daf8d8bc 648 - now handling the edge case of ->meta->identifier
d7d3f3cb 649 dying by wrapping add_package_symbol to specifically
5f3efd66 650 allow for it to work.
651 - added tests for this
d7d3f3cb 652
653 * Class::MOP::Attribute
6c34db07 654 Class::MOP::Class
d7d3f3cb 655 Class::MOP::Immutable
6c34db07 656 - any time a method meta object is constructed
d7d3f3cb 657 we make sure to pass the correct package and
6c34db07 658 method name information
d7d3f3cb 659
6c34db07 660 * Class::MOP::Method
661 Class::MOP::Method::Wrapped
662 Class::MOP::Method::Generated
663 Class::MOP::Method::Accessor
d7d3f3cb 664 Class::MOP::Method::Consructor
665 - the &wrap constructor method now requires that a
666 'package_name' and 'name' attribute are passed. This
667 is to help support the no-XS version, and will
668 throw an error if these are not supplied.
6c34db07 669 - all these classes are now bootstrapped properly
670 and now store the package_name and name attributes
d7d3f3cb 671 correctly as well
672
673 ~ Build.PL has been removed since the
674 Module::Install support has been removed
9e517e01 675
8adaad20 6760.55 Mon. April 28, 2008
677 - All classes now have proper C3 MRO support
678 - added MRO::Compat as a dependency to allow
679 for the C3 MRO support to Just Work in all
680 perl versions
d7d3f3cb 681
830b326c 682 * Class::MOP::Class
d7d3f3cb 683 - rebless_instance now returns the instance
684 it has just blessed, this is mostly to
830b326c 685 facilitate chaining
d7d3f3cb 686 - set the attr correctly in rebless_instance
6e2a700f 687 when it has no init_arg
77a143ba 688 - tweaked &linear_isa and &class_precedence_list
689 to support c3 classes.
830b326c 690
e0db39d2 6910.54 Fri. March, 14, 2008
8861fab2 692 * Class::MOP
214e4bd7 693 metaclass.pm
8861fab2 694 - making sure that load_class never gets
d7d3f3cb 695 passed a value from @_ or $_ to squash
8861fab2 696 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
697
09c6e1d2 698 * Class::MOP::Class
699 - make_{immutable,mutable} now return 1
700 (cause Sartak asked)
d7b2249e 701 - improved error handling in ->create method
d7d3f3cb 702 - rebless_instance now takes extra params which
703 will be used to populate values
214e4bd7 704 - added tests for this
d7d3f3cb 705
acce7fd6 706 * Class::MOP::Object
d7d3f3cb 707 - localizing the Data::Dumper configurations so
708 that it does not pollute others (RT #33509)
709
d7b2249e 710 * Class::MOP::Class
711 Class::MOP::Package
712 Class::MOP::Module
713 Class::MOP::Method
714 Class::MOP::Attribute
d7d3f3cb 715 - these classes no longer define their own ->meta,
716 but instead just inherit from Class::MOP::Object
717
d7b2249e 718 * Class::MOP::Instance
d7d3f3cb 719 Class::MOP::Immutable
d7b2249e 720 - these classes now inherit from Class::MOP::Object
d7d3f3cb 721
10dd437b 722 * t/
d7d3f3cb 723 - fixed the filename length on several
10dd437b 724 test files so we install on VMS better
725 (RT #32295)
d7d3f3cb 726 - fixed incorrect use of catdir when it
10dd437b 727 should be catfile (RT #32385)
728
2491730f 7290.53 Thurs. Feb. 14, 1008
7a536297 730 ~~ several doc. fixes and updates ~~
d7d3f3cb 731
0c6f4c4a 732 * Class::MOP::Class
733 Class::MOP::Method::Constructor
734 Class::MOP::Attribute
735 - making init_arg accept an undefined value
d7d3f3cb 736 to indicate that no constructor args can
0c6f4c4a 737 be passed (thanks to nothingmuch)
738 - added tests for this
339264d8 739 - added attribute initializer attribute (rjbs)
d7d3f3cb 740
0c6f4c4a 741 * Class::MOP.
742 - making this use the new init_arg => undef
d7d3f3cb 743 feature instead of the silly hack from
0c6f4c4a 744 before (thanks to nothingmuch)
ad074154 745
3e8e8f07 7460.52 Tues. Jan. 22, 2008
2a2b8458 747 * Class::MOP::Class
d7d3f3cb 748 - fixed bug in rebless_instance
2a2b8458 749 (discovered by ash)
750
751 * Class::MOP::Method::Constructor
d7d3f3cb 752 - removed assumptions about the existence of
2a2b8458 753 a &meta method
754
656ce3ba 7550.51 Mon. Jan. 14, 2008
69e3ab0a 756 ~~~ some misc. doc. fixes ~~~
757 ~~ updated copyright dates ~~
d7d3f3cb 758
c1d5345a 759 * Class::MOP
d7d3f3cb 760 - now sets the IS_RUNNING_ON_5_10
c1d5345a 761 constant so that we can take advantage
762 of some of the nice bits of 5.10
d7d3f3cb 763
c1d5345a 764 * Class::MOP::Class
d7d3f3cb 765 - uses the IS_RUNNING_ON_5_10 flag to
766 optimize the &linearized_isa method
c1d5345a 767 and avoid the hack/check for circular
d7d3f3cb 768 inheritence in &class_precedence_list
3d9e4646 769 - added rebless_instance method (Sartak)
770 - added tests for this
d7d3f3cb 771
772 * Class::MOP::Immutable
773 - the immutable class now keeps track of
c1d5345a 774 the transformer which immutablized it
69e3ab0a 775
3d9e4646 776 * Class::MOP::Instance
777 - added rebless_instance_structure method (Sartak)
778 - added tests for this
779
a780a6ff 7800.50 Fri. Dec. 21, 2007
6ff0d647 781 * Class::MOP::Class
d7d3f3cb 782 - fixed bug in immutable to make sure that
783 transformation arguments are saved
6ff0d647 784 correctly (mst)
b6bcc3a5 785 - added tests for this
d7d3f3cb 786
6ff0d647 787 * Class::MOP::Immutable
788 - fixed a bug (see above)
d7d3f3cb 789
6ff0d647 790 * Class::MOP::Attribute
791 - some doc updates
792
30b8af04 7930.49 Fri. Dec. 14, 2007
b6bcc3a5 794 !! Class::MOP now loads 2 x faster !!
30b8af04 795 !! with XS speedups (thanks konobi) !!
d7d3f3cb 796
30b8af04 797 * Class::MOP
798 - removed the dependency on B
799 - added two XS functions (thanks konobi)
800 - get_code_info($code) which replaces all
801 the B fiddling we were doing with
802 faster/leaner XS level fiddling
d7d3f3cb 803 - check_package_cache_flag($pkg_name) which
804 returns the PL_sub_generation variable to
30b8af04 805 be used to help manage method caching.
d7d3f3cb 806
807 NOTE:
808 In 5.10 or greater this will actually
809 use the mro::get_pkg_gen instead to give
810 even more accurate caching information.
30b8af04 811 blblack++ for that stuff :)
d7d3f3cb 812
6c9f390e 813 * Class::MOP::Class
814 - added the &subclasses method (thanks rlb)
d7d3f3cb 815 - added the update_package_cache_flag and
816 reset_package_cache_flag which help keep
817 track of when we need to re-fetch the
818 method map.
30b8af04 819 - Several small improvements to take advantage
820 of the new method map caching features
4c4a6c41 821
1b8b3e09 8220.48 Mon. Nov. 26, 2007
d14f6cbe 823 * Class::MOP::Attribute
d7d3f3cb 824 - fixed get_read/write_method to handle the
825 HASH ref case, which makes the
d14f6cbe 826 get_read/write_method_ref handle it too.
827 - added more tests for this
828
742fb371 8290.47 Sat. Nov. 24, 2007
830 * Class::MOP::Attribute
831 - fixed misspelling in get_write_method_ref
78d9bb38 832 - added more tests for this
742fb371 833
fe7c0b15 8340.46 Fri. Nov. 23, 2007
b7bdffc3 835 * Class::MOP::Class
d7d3f3cb 836 - added the linearized_isa method instead of constantly
837 pruning duplicate classes (this will be even more
b7bdffc3 838 useful in the 5.10-compat version coming soon)
d7d3f3cb 839
5da16d1b 840 * Class::MOP::Attribute
841 - added the get_read_method_ref and get_write_method_ref
d7d3f3cb 842 methods which allow you to retrieve a CODE ref which
5da16d1b 843 can always be used to read or write an attribute.
b7bdffc3 844
1a5cc82e 8450.45 Thurs. Nov. 13, 2007
232c4e13 846 * Class::MOP::Attribute
847 - Fix error message on confess (groditi)
848
544143b2 8490.44 Thurs. Nov. 13, 2007
850 - Apparently I didn't make dist correctly (groditi)
851
c0aeeb91 8520.43 Thurs. Nov. 13, 2007
b08fd50c 853 * Class::MOP
1d68af04 854 - Add support for the 'builder' attribute (groditi)
855
b08fd50c 856 * Class::MOP::Class
d7d3f3cb 857 - optimise metaclass-already-exists check in
b08fd50c 858 construct_class_instance (groditi)
d7d3f3cb 859 - duplicate check into initialize to save a
b08fd50c 860 call through (groditi)
861
1d68af04 862 * Class::MOP::Attribute
863 - Add support for the 'builder' attribute (groditi)
d7d3f3cb 864 - Make predicates check for the existence of a value, not whether
b08fd50c 865 it is defined (groditi)
8768ecf3 866
867 * Class::MOP::Instance
d7d3f3cb 868 - Make predicates check for the existence of a value, not whether
b08fd50c 869 it is defined (groditi)
8768ecf3 870
d7d3f3cb 871 * Class::MOP::Method::Accessor
565f0cbb 872 - made this a subclass of Class::MOP::Method::Generated
873 - removed the relevant attributes
874
875 * Class::MOP::Method::Constructor
876 - fixed the cached values we had to be more sane
877 - made this a subclass of Class::MOP::Method::Generated
d7d3f3cb 878 - fixed generated constructor so it properly handles
565f0cbb 879 subclasses now.
880 - added tests for this
d7d3f3cb 881 - added the option to allow for both inlined and
565f0cbb 882 non-inlined constructors.
b08fd50c 883 - Update inlined methods for builder and predicate changes (groditi)
565f0cbb 884
885 * Class::MOP::Method::Generated
d7d3f3cb 886 - added this class as an abstract base for the
565f0cbb 887 Class::MOP::Method::{Constructor,Accessor} classes
888 - added tests for this
889
b08fd50c 890 *t/
891 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
892 - Tests for new predicate behavior (and corrections to old tests) (groditi)
893
894 *examples/
895 - Update ArrayRef based class example to work with predicate changes
896
367183c4 8970.42 Mon. July 16, 2007
9195ddff 898 !!! Horray for mst, he fixed it !!!
899
92af7fdf 900 * Class::MOP::Package
901 - alter symbol table handling to deal with 5.8.x and 5.9.x
d7d3f3cb 902
92af7fdf 903 * t/
9195ddff 904 - Get rid of the crappy workaround from 0.40/41
92af7fdf 905
829f7554 9060.41 Sun. July 15, 2007
907 * t/
908 Arghh!!! My TODO test didn't work, so I handle
d7d3f3cb 909 it manually now so that people can use this
829f7554 910 with 5.9.5/bleadperl without issue.
911
1d7205b8 9120.40 Tues, July 3, 2007
9f88b8ff 913 * t/
d7d3f3cb 914 ~ marked a test in 003_methods.t as TODO
915 for perl 5.9.5 (this test is irrelvant to
916 the module functioning on 5.9.5 for the most
1d7205b8 917 part anyway)
9f88b8ff 918
28acb786 9190.39 Mon. June 18, 2007
b817e248 920 * Class::MOP::Immutable
0ac992ee 921 - added make_metaclass_mutable + docs (groditi)
922 - removed unused variable
d9586da2 923 - added create_immutable_transformer
924 necessary for sane overloading of immutable behavior
d7d3f3cb 925 - tests for this (groditi)
0ac992ee 926
927 * Class::MOP::Class
928 - Immutability can now be undone,
929 added make_mutable + tests + docs (groditi)
04dd7510 930 - Massive changes to the way Immutable is done
931 for details see comments next to make_immutable
932 This fixes a bug where custom metaclasses broke
d7d3f3cb 933 when made immutable. We are now keeping one immutable
934 metaclass instance per metaclass instead of just one
04dd7510 935 to prevent isa hierarchy corruption. Memory use will go
936 up, but I suspect it will be neglible.
937 - New tests added for this behavior. (groditi)
7c90a1a8 938
c0fcd6ab 9390.38 Thurs. May 31, 2007
823a5d31 940 ~~ More documentation updates ~~
d7d3f3cb 941
823a5d31 942 * Class::MOP::Package
943 - we now deal with stub methods properly
944 - added tests for this
c0fcd6ab 945 - fixed some tests failing on 5.9.5 (thanks blblack)
d7d3f3cb 946
b25109b1 947 * Class::MOP::Attribute
948 - added get_read_method and get_write_method
d7d3f3cb 949 thanks to groditi for this code, tests
c81de280 950 and docs.
b25109b1 951 - added tests and POD for this
d7d3f3cb 952
795a0c8b 953 * Class::MOP::Class
d7d3f3cb 954 - fixed RT issue #27329, clone object now
795a0c8b 955 handles undef values correctly.
956 - added tests for this
d7d3f3cb 957 - Corrected anon-class handling so that they
958 will not get reaped when instances still
959 exist which need to reference them. This is
960 the correct behavior, hopefully this is an
961 obscure enough feature that there are not too
d4ba1677 962 many work arounds out in the wild.
d7d3f3cb 963 - added tests for this by groditi
95514cb4 964 - updated docs to explain this
965
966 * metaclass
c0fcd6ab 967 - load custom metaclasses automatically (thanks groditi)
f2266181 968 - added tests for this behavior
a06797b0 969
3dc99d93 9700.37 Sat. March 10, 2007
448b6e55 971 ~~ Many, many documentation updates ~~
d7d3f3cb 972
448b6e55 973 * Class::MOP
d7d3f3cb 974 - added &load_class and &is_class_loaded
448b6e55 975 - added tests and docs for these
2367814a 976
9363ea89 977 * Class::MOP::Attribute
d7d3f3cb 978 - default now checks the instance with defined to
9363ea89 979 avoid setting off bool-overloads (found by Carl Franks)
980
c23184fc 9810.37_002
d7d3f3cb 982 * /t
983 - bad name in a test, causing meaningless failuress.
c23184fc 984 No other changes.
985
9860.37_001
d7d3f3cb 987
c23184fc 988 ~~ GLOBAL CHANGES ~~
d7d3f3cb 989 - All attribute names are now consistent and follow Perl 6
990 style (prefixed with the sigil, and ! as the twigil for
991 private attrs). This should not affect any code, unless
992 you broke encapsulation, in which case, it is your problem
c23184fc 993 anyway.
d7d3f3cb 994
c23184fc 995 !! Class::MOP::Class::Immutable has been removed
d7d3f3cb 996
c23184fc 997 * Class::MOP::Method::Constructor
d7d3f3cb 998 - this has been moved out of Class::MOP::Class::Immutable
c23184fc 999 and is a proper subclass of Class::MOP::Method now.
d7d3f3cb 1000
c23184fc 1001 * Class::MOP::Class
d7d3f3cb 1002 - this module now uses Class::MOP::Immutable for the
1003 immutable transformation instead of
c23184fc 1004 Class::MOP::Class::Immutable.
d7d3f3cb 1005
1006 + Class::MOP::Immutable
1007 - this module now controls the transformation from a mutable
1008 to an immutable version of the class. Docs for this will
c23184fc 1009 be coming eventually.
d7d3f3cb 1010
c23184fc 1011
cdc1ecba 10120.36 Sun. Nov. 5, 2006
a651e249 1013 * Class::MOP::Class
d7d3f3cb 1014 - added a few 'no warnings' lines to keep annoying
1015 (and meaningless) warnings from chirping during
a651e249 1016 global destruction.
d7d3f3cb 1017
0870928c 1018 * Class::MOP
d7d3f3cb 1019 - some more bootstrapping is now done on the new
0870928c 1020 classes
d7d3f3cb 1021
0870928c 1022 * Class::MOP::Class::Immutable
d7d3f3cb 1023 *** API CHANGE ***
1024 - constructor generation is now handled by
0870928c 1025 the Class::MOP::Method::Constructor class
d7d3f3cb 1026
0870928c 1027 * Class::MOP::Method::Constructor
d7d3f3cb 1028 - created this to handle constructor generation
0870928c 1029 in Class::MOP::Class::Immutable
d7d3f3cb 1030
0870928c 1031 * Class::MOP::Attribute
d7d3f3cb 1032 *** API CHANGE ***
1033 - attributes now delegate to the
1034 Class::MOP::Method::Accessor to generate
0870928c 1035 accessors
d7d3f3cb 1036
0870928c 1037 * Class::MOP::Method::Accessor
d7d3f3cb 1038 - all accessor generation functions from
0870928c 1039 Class::MOP::Attribute have been moved here
a651e249 1040
80f00c79 10410.35 Sat. Sept. 30, 2006
8745cf22 1042
1043 * scripts/class_browser.pl
d7d3f3cb 1044 - initial prototype of a class browser, more
1045 on this to come. Comments and patches are
8745cf22 1046 very much welcome.
b1897d4d 1047
1048 * Class::MOP
d7d3f3cb 1049 - All Class::MOP::* accessors are no longer
1050 re-generated in the bootstrap, instead
6d2118a4 1051 they are aliased from the originals
6d2118a4 1052 - fixed tests to reflect
d7d3f3cb 1053 - added Class::MOP::Method (and its subclasses)
b1897d4d 1054 to the bootstrap
1055 - adjusted tests for this
86482605 1056 - added the Class::MOP::Instance attributes
1057 to the bootstrap
d7d3f3cb 1058
b1897d4d 1059 * Class::MOP::Method
1060 *** API CHANGE ***
1061 - methods are no longer blessed CODE refs
1062 but are actual objects which can be CODE-ified
1063 - adjusted tests to compensate
d7d3f3cb 1064 - adjusted docs for this
b1897d4d 1065
1066 * Class::MOP::Class
d7d3f3cb 1067 - changed how methods are dealt with to
1068 encapsulate most of the work into the
b1897d4d 1069 &get_method_map method
1070 - made several adjustments for the change
1071 in Class::MOP::Method
d7d3f3cb 1072 - &add_attribute now checks if you are adding
1073 a duplicate name, and properly removes the
b1897d4d 1074 old one before installing the new one
1075 - added tests for this
86482605 1076 - adjusted docs for this
d7d3f3cb 1077
b1897d4d 1078 * Class::MOP::Class::Immutable
1079 - added caching of &get_method_map
1080 - fixed issue with &get_package_symbol
1081 - cleaned up the methods that die (patch by David Wheeler)
d7d3f3cb 1082
b1897d4d 1083 * Class::MOP::Package
d7d3f3cb 1084 - added filtering capabilities to
b1897d4d 1085 &list_all_package_symbols
1086
a549ce50 10870.34 Sat. Aug. 26, 2006
c4260b45 1088 * Class::MOP::Class
1089 - added the %:methods attribute, which like
d7d3f3cb 1090 the $:version and such just actually goes
1091 to the symbol table to get it's stuff.
c4260b45 1092 However, it makes the MOP more complete.
88dd563c 1093 ** API CHANGE **
d7d3f3cb 1094 - The &create method now requires that all
1095 but the package name now is passed in as
88dd563c 1096 named parameters. See docs for more info.
1097 - updated docs and tests for this
d7d3f3cb 1098
c4260b45 1099 * Class::MOP::Object
d7d3f3cb 1100 - added &dump method to easily Data::Dumper
c4260b45 1101 an object
d7d3f3cb 1102
c4260b45 1103 * Class::MOP
d7d3f3cb 1104 - cleaned up the initialization of attributes
1105 which do not store things in the instance
c4260b45 1106 - added the %:methods attribute definition to
1107 the bootstrap
d7d3f3cb 1108
88dd563c 1109 ~ lots of misc. test cleanup
c4260b45 1110
56e8dd5d 11110.33 Sat. Aug. 19, 2006
be7677c7 1112 * Class::MOP::Class
d7d3f3cb 1113 - moved the metaclass cache out of here
be7677c7 1114 and it is now in Class::MOP itself.
d7d3f3cb 1115
56e8dd5d 1116 * Class::MOP
1117 - moved all the metaclass cache stuff here
1118 - fixed all tests for this
be7677c7 1119
148b4697 1120 * Class::MOP::Attribute
d7d3f3cb 1121 - reference values (other than CODE refs)
148b4697 1122 are no longer allowed for defaults
1123 - added tests for this
d7d3f3cb 1124
56dcfc1a 1125 * Class::MOP::Package
d7d3f3cb 1126 - fixed an issue with perl 5.8.1 and how it deals
1127 with symbol tables. The namespace hash is now
1128 always reloaded from the symbol table.
e3a2c885 1129
1130 ~ lots of misc. documentation cleanup
1396f86b 1131
716c5765 11320.32 Sat. Aug. 12, 2006
d7d3f3cb 1133 + added Class::MOP::Object so that the
6e57504d 1134 metamodel is more complete (and closer
1135 to what Perl 6 will probably be).
1136
9ca19585 1137 * Class::MOP::Package
d7d3f3cb 1138 - refactored entire class, this is now
9ca19585 1139 the primary gateway between the metaclass
1140 and the Perl 5 symbol table
1141 - added many tests for this
d7d3f3cb 1142 - this class is now a subclass of
6e57504d 1143 Class::MOP::Object
716c5765 1144 - added some tests to reflect this
d7d3f3cb 1145
9ca19585 1146 * Class::MOP::Class
d7d3f3cb 1147 - refactored all symbol table access to
9ca19585 1148 use Class::MOP::Package methods instead
d7d3f3cb 1149
f0480c45 1150 * Class::MOP::Module
1151 - adding the $:version attribute in the bootstrap
1152 so that Module has a version as an attribute
1153 - see comment in Class::MOP for details
d7d3f3cb 1154 - added the $:authority attribute to this module
1155 as well as an &identifier method, to bring us
1156 ever closer to Perl 6 goodness
1157 - I have added $AUTHORITY to all the modules
716c5765 1158 - added tests for this
d7d3f3cb 1159
f0480c45 1160 * Class::MOP::Instance
d7d3f3cb 1161 - added &deinitialize_slot for removing slots
f0480c45 1162 from an instance
d7d3f3cb 1163 - added tests for this
1164
1165 * Class::MOP::Attribute
9ca19585 1166 - added support for &deinitialize_slot for removing
1167 slots from an instance
1168 - added tests for this
1169
1a09d9cc 11700.31 Sat. July 15, 2006
1171
b679e644 1172 * Class::MOP::Class
1173 - added &find_method_by_name to locate a method
d7d3f3cb 1174 anywhere within the class hierarchy
1175
b679e644 1176 * Class::MOP::Attribute
d7d3f3cb 1177 - added &set_value and &get_value for getting
1178 the value of the attribute for a particular
b679e644 1179 instance.
1180
373a16ae 11810.30 Wed. July 5, 2006
1182 ---------------------------------------
d7d3f3cb 1183 This is the first version of Class::MOP
373a16ae 1184 to introduce the immutable features which
d7d3f3cb 1185 will be used for optimizating the MOP.
373a16ae 1186 This support should still be considered
1187 experimental, but moving towards stability.
1188 ---------------------------------------
d7d3f3cb 1189
1190 * Created Class::MOP::Class::Immutable
1191
1192 * Created the Class::MOP::Package and
1193 Class::MOP::Module classes to more
373a16ae 1194 closely conform to Perl 6's meta-model
e0a82090 1195
1196 * Class::MOP::Class
1197 - now inherits from Class::MOP::Module
d7d3f3cb 1198 - several methods moved to ::Module and
e0a82090 1199 ::Package and now inherited
1200 - added tests for this
d7d3f3cb 1201
c0cbf4d9 1202 * Class::MOP::Instance
d7d3f3cb 1203 - added an is_inlinable method to allow other
c0cbf4d9 1204 classes to check before they attempt to optimize.
d7d3f3cb 1205 - added an inline_create_instance to inline
1206 instance creation (of course)
1207
2ba153a9 1208 ** API CHANGE **
d7d3f3cb 1209 - the Class::MOP::Class::*_package_variable
2ba153a9 1210 methods are all now methods of Class::MOP::Package
d7d3f3cb 1211 and called *_package_symbol instead. This is
1212 because they are now more general purpose symbol
1213 table manipulation methods.
e0a82090 1214
cdfaa4cc 12150.29_02 Thurs. June 22, 2006
1216 ++ DEVELOPER RELEASE ++
df7b4119 1217 * Class::MOP::Class
d7d3f3cb 1218 - small change in &create so that it behaves
df7b4119 1219 properly when inherited
cdfaa4cc 1220 - small fix to &clone_instance
df7b4119 1221
667cecf3 12220.29_01 Fri. May 12, 2006
1223 ++ DEVELOPER RELEASE ++
d7d3f3cb 1224 - This release works in combination with
667cecf3 1225 Moose 0.09_01, it is a developer release
d7d3f3cb 1226 because it introduces a new instance
1227 sub-protocol and has not yet been
1228 optimized.
667cecf3 1229
40483095 1230 * Class::MOP::Class
1231 - anon-classes are now properly garbage collected
d7d3f3cb 1232 - added tests for this
1233 - improved method modifier wrapping
40483095 1234
2bab2be6 1235 * Class::MOP::Instance
1becdfcc 1236 - added new instance protocol
2bab2be6 1237 - added tests for this
1238 - changed all relevant modules and examples
1239 - Class::MOP::Class
1240 - Class::MOP::Attribute
1241 - examples/*
1242
1becdfcc 1243 * metaclass
1244 - you no longer need to specify the metaclass
1245 itself, if it is not there, Class::MOP::Class
1246 is just assumed
1247 - updated tests for this
1248
1249 * examples/
d7d3f3cb 1250 - added ArrayBasedStorage example to show
1becdfcc 1251 instance storage using ARRAY refs instead of
d7d3f3cb 1252 HASH refs.
1becdfcc 1253 - added tests for this
d7d3f3cb 1254 - InsideOutClass is totally revised using the
1becdfcc 1255 new instance protocol
1256 - added more tests for this
1257
93b4e576 12580.26 Mon. April 24, 2006
e7f732e4 1259 * Class::MOP::Class
1260 - added find_attribute_by_name method
1261 - added tests and docs for this
56a0b530 1262 - some small optimizations
1263
1264 * Class::MOP::Attribute
1265 - some small optimizations
e7f732e4 1266
46666f33 12670.25 Thurs. April 20, 2006
587aca23 1268 * Class::MOP::Class
1269 - added create_anon_class for creating anonymous classes
1270 - added tests for this
1271 - added get_all_metaclasses, get_all_metaclass_names
1272 and get_all_metaclass_instances method to allow
1273 access to all the cached metaclass objects.
bd4e03f9 1274 - attribute slot initialization is now the responsibility
d7d3f3cb 1275 of the attribute itself, and construct_instance now
bd4e03f9 1276 delegates appropriately
d7d3f3cb 1277
bd4e03f9 1278 * Class::MOP::Attribute
1279 - attribute slot initialization is now the responsibility
1280 of the attribute itself, so we added a method for it
1281 called initialize_instance_slot
d7d3f3cb 1282
fed4cee7 1283 * examples/
d7d3f3cb 1284 - adjusted all the examples to use the new attribute
1285 initialize_instance_slot method
587aca23 1286
1daaa2b2 12870.24 Tues. April 11, 2006
8c936afc 1288 * Class::MOP::Class
d7d3f3cb 1289 - cleaned up how the before/after/around method
8c936afc 1290 modifiers get named with Sub::Name
1291
b9dfbf78 12920.23 Thurs. March 30, 2006
a977cf65 1293 * Class::MOP::Class
d7d3f3cb 1294 - fixed the way attribute defaults are handled
a977cf65 1295 during instance construction (bug found by chansen)
d7d3f3cb 1296
b9dfbf78 1297 * Class::MOP::Attribute
d7d3f3cb 1298 - read-only accessors ('reader') will now die if
b9dfbf78 1299 passed more than one argument (attempting to write
1300 to them basically)
1301 - added tests for this
d7d3f3cb 1302 - adjusted all /example files to comply
a977cf65 1303
f9eba090 13040.22 Mon. March 20, 2006
0eff2c16 1305 * Class::MOP::Class
1306 - localized $@ in the *_package_variable functions
1307 because otherwise, it does ugly things in Moose.
1308 - added test case for this
1309
1988e85e 13100.21 Wed. March 15, 2006
2f6d5412 1311 * Class::MOP::Class
d7d3f3cb 1312 - fixed issue where metaclasses are reaped from
2f6d5412 1313 our cache in global destruction, and so are not
1314 available in DESTORY calls
1315
96ceced8 13160.20 Thurs. March 2, 2006
d7d3f3cb 1317 - removed the dependency for Clone since
d3cb0d4a 1318 we no longer to deep-cloning by default.
d7d3f3cb 1319
a4258ffd 1320 * Class::MOP::Method
d7d3f3cb 1321 - added &package_name, &name and
1322 &fully_qualified_name methods, some of
1323 which were formerly private subs in
a4258ffd 1324 Class::MOP::Class
d7d3f3cb 1325
a4258ffd 1326 * Class::MOP::Method::Wrapped
d7d3f3cb 1327 - allows for a method to be wrapped with
1328 before, after and around modifiers
a4258ffd 1329 - added tests and docs for this feature
d3cb0d4a 1330
1331 * Class::MOP::Class
58d75218 1332 - improved &get_package_symbol
96ceced8 1333 - &version and &superclasses now use it
a4258ffd 1334 - methods are now blessed into Class::MOP::Method
1335 whenever possible
d7d3f3cb 1336 - added methods to install CLOS-style method modifiers
a4258ffd 1337 - &add_before_method_modifier
d7d3f3cb 1338 - &add_after_method_modifier
a4258ffd 1339 - &add_around_method_modifier
1340 - added tests and docs for these
d7d3f3cb 1341 - added &find_next_method_by_name which finds the
96ceced8 1342 equivalent of SUPER::method_name
d3cb0d4a 1343
1c020571 13440.12 Thurs. Feb 23, 2006
d7d3f3cb 1345 - reduced the dependency on B, no need to always
d89c0fad 1346 have the latest
1347
1c020571 1348 * examples/
1349 - added docs to the C3 method dispatch order test
d7d3f3cb 1350 - fixed missing Algorithm::C3 dependency by making
1c020571 1351 the test skip if it is not installed
1352
0dea7280 13530.11 Mon Feb. 20, 2006
f3f5bd34 1354 * examples/
1355 - added example of changing method dispatch order to C3
d7d3f3cb 1356
a27ae83f 1357 * Class::MOP::Class
19d4b5b8 1358 - changed how clone_instance behaves, it now only does a
1359 shallow clone (see docs for more details)
a27ae83f 1360 - added docs and tests
f3f5bd34 1361
3bf7644b 13620.10 Tues Feb. 14, 2006
d7d3f3cb 1363 ** This release was mostly about writing more tests and
1364 cleaning out old and dusty code, the MOP should now
3bf7644b 1365 be considered "ready to use".
1366
22286063 1367 - adding more tests to get coverage up a little higher,
1368 mostly testing errors and edge cases.
1369 - test coverage is now at 99%
d7d3f3cb 1370
aa448b16 1371 * Class::MOP
1372 - no longer optionally exports to UNIVERSAL::meta or
d7d3f3cb 1373 creates a custom metaclass generator, use the
aa448b16 1374 metaclass pragma instead.
22286063 1375
d7d3f3cb 1376 * Class::MOP::Class
1377 - fixed a number of minor issues which came up in the
1378 error/edge-case tests
1379
1380 * Class::MOP::Attribute
1381 - fixed a number of minor issues which came up in the
22286063 1382 error/edge-case tests
d7d3f3cb 1383
0b8eb325 1384 * examples/
ea263060 1385 - fixing the AttributesWithHistory example, it was broken.
663f8198 1386
550d56db 13870.06 Thurs Feb. 9, 2006
677eb158 1388 * metaclass
d7d3f3cb 1389 - adding new metaclass pragma to make setting up the
677eb158 1390 metaclass a little more straightforward
d7d3f3cb 1391
7b31baf4 1392 * Class::MOP
d7d3f3cb 1393 - clean up bootstrapping to include more complete
1394 attribute definitions for Class::MOP::Class and
1395 Class::MOP::Attribute (accessors, readers, writers,
7b31baf4 1396 etc.) ... it is redundant, but is useful meta-info
1397 to have around.
677eb158 1398
99e5b7e8 1399 * Class::MOP::Class
d7d3f3cb 1400 - fixing minor meta-circularity issue with &meta, it
99e5b7e8 1401 is now more useful for subclasses
d7d3f3cb 1402 - added &get_attribute_map as an accessor for the
7b31baf4 1403 hash of attribute meta objects
c9e77dbb 1404 - &compute_all_applicable_attributes now just returns
1405 the attribute meta-object, rather than the HASH ref
d7d3f3cb 1406 since all the same info can be gotten from the
c9e77dbb 1407 attribute meta-object itself
1408 - updated docs & tests to reflect
5f3c057a 1409 - added &clone_instance method which does a deep clone
1410 of the instance structure created by &construct_instance
1411 - added docs & tests for this
550d56db 1412 - added Clone as a dependency
5f3c057a 1413 - added &new_object and &clone_object convience methods to
1414 return blessed new or cloned instances
2a7575a6 1415 - they handle Class::MOP::Class singletons correctly too
5f3c057a 1416 - added docs & tests for this
2a7575a6 1417 - cleaned up the &constuct_class_instance so that it behaves
1418 more like &construct_instance (and managed the singletons too)
550d56db 1419 - added the &check_metaclass_compatibility method to make sure
1420 that metaclasses are upward and downward compatible.
1421 - added tests and docs for this
d7d3f3cb 1422
99e5b7e8 1423 * examples/
1424 - adjusting code to use the &Class::MOP::Class::meta
1425 fix detailed above
677eb158 1426 - adjusting code to use the metaclass pragma
d7d3f3cb 1427
aa9c883e 14280.05 Sat Feb. 4, 2006
2e41896e 1429 * Class::MOP::Class
1430 - added the &attribute_metaclass and &method_metaclass
d7d3f3cb 1431 attributes which contain a metaclass name to use for
2e41896e 1432 attributes/methods respectively
d7d3f3cb 1433
351bd7d4 1434 * Class::MOP
d7d3f3cb 1435 - bootstrap additional attributes for Class::MOP::Class
1436
2e41896e 1437 * examples/
1438 - adjusted the example code and tests to use the new
1439 &attribute_metaclass feature of Class::MOP::Class
aa9c883e 1440 - added new example:
1441 - LazyClass
2e41896e 1442
d7c2cbe3 14430.04 Fri Feb. 3, 2006
d6fbcd05 1444 * Class::MOP::Class
1445 - some documentation suggestions from #perl6
d7d3f3cb 1446
d6fbcd05 1447 * Class::MOP::Attribute
d7d3f3cb 1448 - improved error messages
1449
d6fbcd05 1450 * examples/
1451 - added new examples:
1452 - AttributesWithHistory
d7c2cbe3 1453 - ClassEncapsultedAttributes
343203ee 1454
9ec169fe 14550.03 Fri Feb. 3, 2006
1456 - converted to Module::Build instead of EU::MM
d7d3f3cb 1457
9ec169fe 1458 * Class::MOP::Attribute
1459 - refactored method generation code
1460 - attributes are now associated with class directly
d7d3f3cb 1461
f71f4295 1462 * examples/
d7d3f3cb 1463 - refactored the InsideOut example to take advantage
9ec169fe 1464 of the Class::MOP::Attribute refactoring
f71f4295 1465 - changed example files to .pod files and hide thier
1466 package names from PAUSE (I don't want to own these
1467 namespaces really, they are just examples)
9ec169fe 1468
a57c7fa2 14690.02 Thurs Feb. 2, 2006
1470 - moving examples from t/lib/* to examples/*
1471 - adding POD documentation to the examples
1472
a2e85e6c 14730.01 Thurs Feb. 2, 2006
92af7fdf 1474 - Initial release