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