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