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