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