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