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