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