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