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