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