add Build.PL; update MANIFEST
[gitmo/Class-MOP.git] / Changes
CommitLineData
7c90a1a8 1Revision history for Perl extension Class-MOP.
b817e248 2
3af3cbbd 3 * Class::MOP::Class
4 - optimise metaclass-already-exists check in construct_class_instance
5 - duplicate check into initialize to save a call through
6
565f0cbb 70.43
8 * Class::MOP::Method::Accessor
9 - made this a subclass of Class::MOP::Method::Generated
10 - removed the relevant attributes
11
12 * Class::MOP::Method::Constructor
13 - fixed the cached values we had to be more sane
14 - made this a subclass of Class::MOP::Method::Generated
15 - fixed generated constructor so it properly handles
16 subclasses now.
17 - added tests for this
18 - added the option to allow for both inlined and
19 non-inlined constructors.
20
21 * Class::MOP::Method::Generated
22 - added this class as an abstract base for the
23 Class::MOP::Method::{Constructor,Accessor} classes
24 - added tests for this
25
367183c4 260.42 Mon. July 16, 2007
9195ddff 27 !!! Horray for mst, he fixed it !!!
28
92af7fdf 29 * Class::MOP::Package
30 - alter symbol table handling to deal with 5.8.x and 5.9.x
9195ddff 31
92af7fdf 32 * t/
9195ddff 33 - Get rid of the crappy workaround from 0.40/41
92af7fdf 34
829f7554 350.41 Sun. July 15, 2007
36 * t/
37 Arghh!!! My TODO test didn't work, so I handle
38 it manually now so that people can use this
39 with 5.9.5/bleadperl without issue.
40
1d7205b8 410.40 Tues, July 3, 2007
9f88b8ff 42 * t/
43 ~ marked a test in 003_methods.t as TODO
1d7205b8 44 for perl 5.9.5 (this test is irrelvant to
45 the module functioning on 5.9.5 for the most
46 part anyway)
9f88b8ff 47
28acb786 480.39 Mon. June 18, 2007
b817e248 49 * Class::MOP::Immutable
0ac992ee 50 - added make_metaclass_mutable + docs (groditi)
51 - removed unused variable
d9586da2 52 - added create_immutable_transformer
53 necessary for sane overloading of immutable behavior
54 - tests for this (groditi)
0ac992ee 55
56 * Class::MOP::Class
57 - Immutability can now be undone,
58 added make_mutable + tests + docs (groditi)
04dd7510 59 - Massive changes to the way Immutable is done
60 for details see comments next to make_immutable
61 This fixes a bug where custom metaclasses broke
62 when made immutable. We are now keeping one immutable
63 metaclass instance per metaclass instead of just one
64 to prevent isa hierarchy corruption. Memory use will go
65 up, but I suspect it will be neglible.
66 - New tests added for this behavior. (groditi)
7c90a1a8 67
c0fcd6ab 680.38 Thurs. May 31, 2007
823a5d31 69 ~~ More documentation updates ~~
c81de280 70
823a5d31 71 * Class::MOP::Package
72 - we now deal with stub methods properly
73 - added tests for this
c0fcd6ab 74 - fixed some tests failing on 5.9.5 (thanks blblack)
c81de280 75
b25109b1 76 * Class::MOP::Attribute
77 - added get_read_method and get_write_method
c81de280 78 thanks to groditi for this code, tests
79 and docs.
b25109b1 80 - added tests and POD for this
795a0c8b 81
82 * Class::MOP::Class
83 - fixed RT issue #27329, clone object now
84 handles undef values correctly.
85 - added tests for this
d4ba1677 86 - Corrected anon-class handling so that they
87 will not get reaped when instances still
88 exist which need to reference them. This is
89 the correct behavior, hopefully this is an
90 obscure enough feature that there are not too
91 many work arounds out in the wild.
92 - added tests for this by groditi
95514cb4 93 - updated docs to explain this
94
95 * metaclass
c0fcd6ab 96 - load custom metaclasses automatically (thanks groditi)
f2266181 97 - added tests for this behavior
a06797b0 98
3dc99d93 990.37 Sat. March 10, 2007
448b6e55 100 ~~ Many, many documentation updates ~~
101
102 * Class::MOP
103 - added &load_class and &is_class_loaded
104 - added tests and docs for these
2367814a 105
9363ea89 106 * Class::MOP::Attribute
107 - default now checks the instance with defined to
108 avoid setting off bool-overloads (found by Carl Franks)
109
c23184fc 1100.37_002
111 * /t
112 - bad name in a test, causing meaningless failuress.
113 No other changes.
114
1150.37_001
116
117 ~~ GLOBAL CHANGES ~~
118 - All attribute names are now consistent and follow Perl 6
119 style (prefixed with the sigil, and ! as the twigil for
120 private attrs). This should not affect any code, unless
121 you broke encapsulation, in which case, it is your problem
122 anyway.
123
124 !! Class::MOP::Class::Immutable has been removed
125
126 * Class::MOP::Method::Constructor
127 - this has been moved out of Class::MOP::Class::Immutable
128 and is a proper subclass of Class::MOP::Method now.
129
130 * Class::MOP::Class
131 - this module now uses Class::MOP::Immutable for the
132 immutable transformation instead of
133 Class::MOP::Class::Immutable.
134
135 + Class::MOP::Immutable
136 - this module now controls the transformation from a mutable
137 to an immutable version of the class. Docs for this will
138 be coming eventually.
139
140
cdc1ecba 1410.36 Sun. Nov. 5, 2006
a651e249 142 * Class::MOP::Class
143 - added a few 'no warnings' lines to keep annoying
144 (and meaningless) warnings from chirping during
145 global destruction.
0870928c 146
147 * Class::MOP
148 - some more bootstrapping is now done on the new
149 classes
150
151 * Class::MOP::Class::Immutable
152 *** API CHANGE ***
153 - constructor generation is now handled by
154 the Class::MOP::Method::Constructor class
155
156 * Class::MOP::Method::Constructor
157 - created this to handle constructor generation
158 in Class::MOP::Class::Immutable
159
160 * Class::MOP::Attribute
161 *** API CHANGE ***
162 - attributes now delegate to the
163 Class::MOP::Method::Accessor to generate
164 accessors
165
166 * Class::MOP::Method::Accessor
167 - all accessor generation functions from
168 Class::MOP::Attribute have been moved here
a651e249 169
80f00c79 1700.35 Sat. Sept. 30, 2006
8745cf22 171
172 * scripts/class_browser.pl
173 - initial prototype of a class browser, more
174 on this to come. Comments and patches are
175 very much welcome.
b1897d4d 176
177 * Class::MOP
3e86c902 178 - All Class::MOP::* accessors are no longer
179 re-generated in the bootstrap, instead
6d2118a4 180 they are aliased from the originals
6d2118a4 181 - fixed tests to reflect
b1897d4d 182 - added Class::MOP::Method (and its subclasses)
183 to the bootstrap
184 - adjusted tests for this
86482605 185 - added the Class::MOP::Instance attributes
186 to the bootstrap
b1897d4d 187
188 * Class::MOP::Method
189 *** API CHANGE ***
190 - methods are no longer blessed CODE refs
191 but are actual objects which can be CODE-ified
192 - adjusted tests to compensate
86482605 193 - adjusted docs for this
b1897d4d 194
195 * Class::MOP::Class
196 - changed how methods are dealt with to
197 encapsulate most of the work into the
198 &get_method_map method
199 - made several adjustments for the change
200 in Class::MOP::Method
201 - &add_attribute now checks if you are adding
202 a duplicate name, and properly removes the
203 old one before installing the new one
204 - added tests for this
86482605 205 - adjusted docs for this
b1897d4d 206
207 * Class::MOP::Class::Immutable
208 - added caching of &get_method_map
209 - fixed issue with &get_package_symbol
210 - cleaned up the methods that die (patch by David Wheeler)
211
212 * Class::MOP::Package
213 - added filtering capabilities to
214 &list_all_package_symbols
215
a549ce50 2160.34 Sat. Aug. 26, 2006
c4260b45 217 * Class::MOP::Class
218 - added the %:methods attribute, which like
219 the $:version and such just actually goes
220 to the symbol table to get it's stuff.
221 However, it makes the MOP more complete.
88dd563c 222 ** API CHANGE **
223 - The &create method now requires that all
224 but the package name now is passed in as
225 named parameters. See docs for more info.
226 - updated docs and tests for this
c4260b45 227
228 * Class::MOP::Object
229 - added &dump method to easily Data::Dumper
230 an object
231
232 * Class::MOP
233 - cleaned up the initialization of attributes
234 which do not store things in the instance
235 - added the %:methods attribute definition to
236 the bootstrap
88dd563c 237
238 ~ lots of misc. test cleanup
c4260b45 239
56e8dd5d 2400.33 Sat. Aug. 19, 2006
be7677c7 241 * Class::MOP::Class
242 - moved the metaclass cache out of here
243 and it is now in Class::MOP itself.
56e8dd5d 244
245 * Class::MOP
246 - moved all the metaclass cache stuff here
247 - fixed all tests for this
be7677c7 248
148b4697 249 * Class::MOP::Attribute
250 - reference values (other than CODE refs)
251 are no longer allowed for defaults
252 - added tests for this
56dcfc1a 253
254 * Class::MOP::Package
255 - fixed an issue with perl 5.8.1 and how it deals
e3a2c885 256 with symbol tables. The namespace hash is now
257 always reloaded from the symbol table.
258
259 ~ lots of misc. documentation cleanup
1396f86b 260
716c5765 2610.32 Sat. Aug. 12, 2006
6e57504d 262 + added Class::MOP::Object so that the
263 metamodel is more complete (and closer
264 to what Perl 6 will probably be).
265
9ca19585 266 * Class::MOP::Package
267 - refactored entire class, this is now
268 the primary gateway between the metaclass
269 and the Perl 5 symbol table
270 - added many tests for this
6e57504d 271 - this class is now a subclass of
272 Class::MOP::Object
716c5765 273 - added some tests to reflect this
9ca19585 274
275 * Class::MOP::Class
276 - refactored all symbol table access to
277 use Class::MOP::Package methods instead
f0480c45 278
279 * Class::MOP::Module
280 - adding the $:version attribute in the bootstrap
281 so that Module has a version as an attribute
282 - see comment in Class::MOP for details
283 - added the $:authority attribute to this module
284 as well as an &identifier method, to bring us
285 ever closer to Perl 6 goodness
716c5765 286 - I have added $AUTHORITY to all the modules
287 - added tests for this
9ca19585 288
f0480c45 289 * Class::MOP::Instance
290 - added &deinitialize_slot for removing slots
291 from an instance
292 - added tests for this
9ca19585 293
294 * Class::MOP::Attribute
295 - added support for &deinitialize_slot for removing
296 slots from an instance
297 - added tests for this
298
1a09d9cc 2990.31 Sat. July 15, 2006
300
b679e644 301 * Class::MOP::Class
302 - added &find_method_by_name to locate a method
303 anywhere within the class hierarchy
304
305 * Class::MOP::Attribute
306 - added &set_value and &get_value for getting
307 the value of the attribute for a particular
308 instance.
309
373a16ae 3100.30 Wed. July 5, 2006
311 ---------------------------------------
312 This is the first version of Class::MOP
313 to introduce the immutable features which
314 will be used for optimizating the MOP.
315 This support should still be considered
316 experimental, but moving towards stability.
317 ---------------------------------------
e0a82090 318
373a16ae 319 * Created Class::MOP::Class::Immutable
be960ba1 320
373a16ae 321 * Created the Class::MOP::Package and
322 Class::MOP::Module classes to more
323 closely conform to Perl 6's meta-model
e0a82090 324
325 * Class::MOP::Class
326 - now inherits from Class::MOP::Module
327 - several methods moved to ::Module and
328 ::Package and now inherited
329 - added tests for this
c0cbf4d9 330
331 * Class::MOP::Instance
332 - added an is_inlinable method to allow other
333 classes to check before they attempt to optimize.
be960ba1 334 - added an inline_create_instance to inline
335 instance creation (of course)
336
2ba153a9 337 ** API CHANGE **
338 - the Class::MOP::Class::*_package_variable
339 methods are all now methods of Class::MOP::Package
340 and called *_package_symbol instead. This is
341 because they are now more general purpose symbol
342 table manipulation methods.
e0a82090 343
cdfaa4cc 3440.29_02 Thurs. June 22, 2006
345 ++ DEVELOPER RELEASE ++
df7b4119 346 * Class::MOP::Class
347 - small change in &create so that it behaves
348 properly when inherited
cdfaa4cc 349 - small fix to &clone_instance
df7b4119 350
667cecf3 3510.29_01 Fri. May 12, 2006
352 ++ DEVELOPER RELEASE ++
353 - This release works in combination with
354 Moose 0.09_01, it is a developer release
355 because it introduces a new instance
356 sub-protocol and has not yet been
357 optimized.
358
40483095 359 * Class::MOP::Class
360 - anon-classes are now properly garbage collected
361 - added tests for this
195f5bf8 362 - improved method modifier wrapping
40483095 363
2bab2be6 364 * Class::MOP::Instance
1becdfcc 365 - added new instance protocol
2bab2be6 366 - added tests for this
367 - changed all relevant modules and examples
368 - Class::MOP::Class
369 - Class::MOP::Attribute
370 - examples/*
371
1becdfcc 372 * metaclass
373 - you no longer need to specify the metaclass
374 itself, if it is not there, Class::MOP::Class
375 is just assumed
376 - updated tests for this
377
378 * examples/
379 - added ArrayBasedStorage example to show
380 instance storage using ARRAY refs instead of
381 HASH refs.
382 - added tests for this
383 - InsideOutClass is totally revised using the
384 new instance protocol
385 - added more tests for this
386
93b4e576 3870.26 Mon. April 24, 2006
e7f732e4 388 * Class::MOP::Class
389 - added find_attribute_by_name method
390 - added tests and docs for this
56a0b530 391 - some small optimizations
392
393 * Class::MOP::Attribute
394 - some small optimizations
e7f732e4 395
46666f33 3960.25 Thurs. April 20, 2006
587aca23 397 * Class::MOP::Class
398 - added create_anon_class for creating anonymous classes
399 - added tests for this
400 - added get_all_metaclasses, get_all_metaclass_names
401 and get_all_metaclass_instances method to allow
402 access to all the cached metaclass objects.
bd4e03f9 403 - attribute slot initialization is now the responsibility
404 of the attribute itself, and construct_instance now
405 delegates appropriately
406
407 * Class::MOP::Attribute
408 - attribute slot initialization is now the responsibility
409 of the attribute itself, so we added a method for it
410 called initialize_instance_slot
fed4cee7 411
412 * examples/
413 - adjusted all the examples to use the new attribute
414 initialize_instance_slot method
587aca23 415
1daaa2b2 4160.24 Tues. April 11, 2006
8c936afc 417 * Class::MOP::Class
418 - cleaned up how the before/after/around method
419 modifiers get named with Sub::Name
420
b9dfbf78 4210.23 Thurs. March 30, 2006
a977cf65 422 * Class::MOP::Class
423 - fixed the way attribute defaults are handled
424 during instance construction (bug found by chansen)
b9dfbf78 425
426 * Class::MOP::Attribute
427 - read-only accessors ('reader') will now die if
428 passed more than one argument (attempting to write
429 to them basically)
430 - added tests for this
431 - adjusted all /example files to comply
a977cf65 432
f9eba090 4330.22 Mon. March 20, 2006
0eff2c16 434 * Class::MOP::Class
435 - localized $@ in the *_package_variable functions
436 because otherwise, it does ugly things in Moose.
437 - added test case for this
438
1988e85e 4390.21 Wed. March 15, 2006
2f6d5412 440 * Class::MOP::Class
441 - fixed issue where metaclasses are reaped from
442 our cache in global destruction, and so are not
443 available in DESTORY calls
444
96ceced8 4450.20 Thurs. March 2, 2006
d3cb0d4a 446 - removed the dependency for Clone since
447 we no longer to deep-cloning by default.
a4258ffd 448
449 * Class::MOP::Method
96ceced8 450 - added &package_name, &name and
451 &fully_qualified_name methods, some of
a4258ffd 452 which were formerly private subs in
453 Class::MOP::Class
454
455 * Class::MOP::Method::Wrapped
456 - allows for a method to be wrapped with
457 before, after and around modifiers
458 - added tests and docs for this feature
d3cb0d4a 459
460 * Class::MOP::Class
58d75218 461 - improved &get_package_symbol
96ceced8 462 - &version and &superclasses now use it
a4258ffd 463 - methods are now blessed into Class::MOP::Method
464 whenever possible
a4258ffd 465 - added methods to install CLOS-style method modifiers
466 - &add_before_method_modifier
467 - &add_after_method_modifier
468 - &add_around_method_modifier
469 - added tests and docs for these
96ceced8 470 - added &find_next_method_by_name which finds the
471 equivalent of SUPER::method_name
d3cb0d4a 472
1c020571 4730.12 Thurs. Feb 23, 2006
d89c0fad 474 - reduced the dependency on B, no need to always
475 have the latest
476
1c020571 477 * examples/
478 - added docs to the C3 method dispatch order test
479 - fixed missing Algorithm::C3 dependency by making
480 the test skip if it is not installed
481
0dea7280 4820.11 Mon Feb. 20, 2006
f3f5bd34 483 * examples/
484 - added example of changing method dispatch order to C3
a27ae83f 485
486 * Class::MOP::Class
19d4b5b8 487 - changed how clone_instance behaves, it now only does a
488 shallow clone (see docs for more details)
a27ae83f 489 - added docs and tests
f3f5bd34 490
3bf7644b 4910.10 Tues Feb. 14, 2006
492 ** This release was mostly about writing more tests and
493 cleaning out old and dusty code, the MOP should now
494 be considered "ready to use".
495
22286063 496 - adding more tests to get coverage up a little higher,
497 mostly testing errors and edge cases.
498 - test coverage is now at 99%
aa448b16 499
500 * Class::MOP
501 - no longer optionally exports to UNIVERSAL::meta or
502 creates a custom metaclass generator, use the
503 metaclass pragma instead.
22286063 504
505 * Class::MOP::Class
506 - fixed a number of minor issues which came up in the
507 error/edge-case tests
508
509 * Class::MOP::Attribute
510 - fixed a number of minor issues which came up in the
511 error/edge-case tests
512
0b8eb325 513 * examples/
ea263060 514 - fixing the AttributesWithHistory example, it was broken.
663f8198 515
550d56db 5160.06 Thurs Feb. 9, 2006
677eb158 517 * metaclass
550d56db 518 - adding new metaclass pragma to make setting up the
677eb158 519 metaclass a little more straightforward
7b31baf4 520
521 * Class::MOP
522 - clean up bootstrapping to include more complete
523 attribute definitions for Class::MOP::Class and
524 Class::MOP::Attribute (accessors, readers, writers,
525 etc.) ... it is redundant, but is useful meta-info
526 to have around.
677eb158 527
99e5b7e8 528 * Class::MOP::Class
529 - fixing minor meta-circularity issue with &meta, it
530 is now more useful for subclasses
7b31baf4 531 - added &get_attribute_map as an accessor for the
532 hash of attribute meta objects
c9e77dbb 533 - &compute_all_applicable_attributes now just returns
534 the attribute meta-object, rather than the HASH ref
535 since all the same info can be gotten from the
536 attribute meta-object itself
537 - updated docs & tests to reflect
5f3c057a 538 - added &clone_instance method which does a deep clone
539 of the instance structure created by &construct_instance
540 - added docs & tests for this
550d56db 541 - added Clone as a dependency
5f3c057a 542 - added &new_object and &clone_object convience methods to
543 return blessed new or cloned instances
2a7575a6 544 - they handle Class::MOP::Class singletons correctly too
5f3c057a 545 - added docs & tests for this
2a7575a6 546 - cleaned up the &constuct_class_instance so that it behaves
547 more like &construct_instance (and managed the singletons too)
550d56db 548 - added the &check_metaclass_compatibility method to make sure
549 that metaclasses are upward and downward compatible.
550 - added tests and docs for this
5f3c057a 551
99e5b7e8 552 * examples/
553 - adjusting code to use the &Class::MOP::Class::meta
554 fix detailed above
677eb158 555 - adjusting code to use the metaclass pragma
99e5b7e8 556
aa9c883e 5570.05 Sat Feb. 4, 2006
2e41896e 558 * Class::MOP::Class
559 - added the &attribute_metaclass and &method_metaclass
351bd7d4 560 attributes which contain a metaclass name to use for
2e41896e 561 attributes/methods respectively
351bd7d4 562
563 * Class::MOP
564 - bootstrap additional attributes for Class::MOP::Class
2e41896e 565
566 * examples/
567 - adjusted the example code and tests to use the new
568 &attribute_metaclass feature of Class::MOP::Class
aa9c883e 569 - added new example:
570 - LazyClass
2e41896e 571
d7c2cbe3 5720.04 Fri Feb. 3, 2006
d6fbcd05 573 * Class::MOP::Class
574 - some documentation suggestions from #perl6
575
576 * Class::MOP::Attribute
577 - improved error messages
578
579 * examples/
580 - added new examples:
581 - AttributesWithHistory
d7c2cbe3 582 - ClassEncapsultedAttributes
343203ee 583
9ec169fe 5840.03 Fri Feb. 3, 2006
585 - converted to Module::Build instead of EU::MM
586
587 * Class::MOP::Attribute
588 - refactored method generation code
589 - attributes are now associated with class directly
590
f71f4295 591 * examples/
9ec169fe 592 - refactored the InsideOut example to take advantage
593 of the Class::MOP::Attribute refactoring
f71f4295 594 - changed example files to .pod files and hide thier
595 package names from PAUSE (I don't want to own these
596 namespaces really, they are just examples)
9ec169fe 597
a57c7fa2 5980.02 Thurs Feb. 2, 2006
599 - moving examples from t/lib/* to examples/*
600 - adding POD documentation to the examples
601
a2e85e6c 6020.01 Thurs Feb. 2, 2006
92af7fdf 603 - Initial release