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