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