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