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