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