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