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