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