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