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