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