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