|
| 1 | +## 0.24.0 |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +feat: improve method search and TAO support |
| 8 | + |
| 9 | +* Add TAO (Thread Affine Objects) support to improve thread safety |
| 10 | + - Add atomic thread pointer in object header |
| 11 | + - Add checks to ensure objects are accessed from owning thread |
| 12 | + - Update method calls to support TAO validation |
| 13 | + |
| 14 | +* Refactor method lookup and caching |
| 15 | + - Rename methodcache to impcache for clarity |
| 16 | + - Add callbacks to impcache for better extensibility |
| 17 | + - Improve method search tracing |
| 18 | + - Clean up lookup and refresh functions |
| 19 | + |
| 20 | +* Enhance protocol class handling |
| 21 | + - Run +initialize on adopting classes and subclasses |
| 22 | + - Support +deinitialize for protocol classes |
| 23 | + - Fix meta rootclass protocol class wrapping |
| 24 | + |
| 25 | +* Other improvements |
| 26 | + - Add support for double/float tagged pointers |
| 27 | + - Add noautorelease property attribute |
| 28 | + - Add dynamic property storage for categories |
| 29 | + - Remove -release/-retain from fast methods |
| 30 | + - Fix 32-bit system compatibility |
| 31 | + |
| 32 | +* the chained calls are history now as `mulle_objc_class_search` has been updated with a callback. This avoids code duplicated in the chained calls and future problems with having to maintain the same logic twice |
| 33 | +* fix +initialize calls for some border cases |
| 34 | +* search arguments are no longer set up with `init` functions but with `make` functions |
| 35 | +* the TAO thread pointer in the object header is now atomic |
| 36 | + |
| 37 | +* change in ``mulle_objc_object_get_property_value`` where now a `strategy` value is passed as an int, containing multiple bits (like atomicity) |
| 38 | +* the impcache gained a lot of callbacks, and the Objective-C methods were changed to use them. The callbacks were also renamed to make them a bit more telling |
| 39 | +* protocolclasses `+inititalize` is now run on each adopting class and subclass (this is freaky and useful) |
| 40 | +* slightly improved method search traces |
| 41 | +* -release and -retain are no long fast methods, since they are usually inlined anyway this frees up two slots that are put to other use |
| 42 | +* new `for` functions for methodlists, propertylists etc. (still experimental) |
| 43 | +* functions that use method calls (like ``mulle_objc_object_call_dealloc`` now) |
| 44 | +* add support for the `noautorelease` @property attribute |
| 45 | + |
| 46 | + |
| 47 | +* add support for double and float TPS |
| 48 | +* fix problems with 32 bit systems |
| 49 | + |
| 50 | +* improved method calls |
| 51 | +* renamed ``mulle_objc_object_call_variablemethodid_inline`` to ``mulle_objc_object_call_variable_inline`` |
| 52 | +* renamed ``mulle_objc_object_supercall`` to ``mulle_objc_object_call_super`` |
| 53 | +* `+deinitialize` now also calls protocol classes `+deinitialize` for tidier cleanup |
| 54 | +* fix that meta rootclasses wrap around to root infraclass again, even if there are protocolclasses |
| 55 | +* +method calls also wrap arounf to -methods on protocolclasses attached to the root class |
| 56 | +* NSObject now inherits the most "hardcore" runtime functionality from MulleObjCRuntimeObject |
| 57 | +* new base class MulleObject enables @dynamic @property storage for categories (and all others) |
| 58 | +* nicer output of compilation flags in loadinfo |
| 59 | +* `struct `mulle_objc_typeinfo`` no longer restricts instance variable arrays to 16 bit |
| 60 | +* added pre-alpha ``_mulle_objc_ivarsignature_is_compatible`` for the benefit of MulleObject |
| 61 | + |
| 62 | + |
| 63 | +* **BREAKING** total cleanup of the various lookup and refresh functions, too many to mention |
| 64 | +* TAO (thread affine objects) added. Your multi-threaded code will now bail, if a method accesses an instance that is living in a different thread |
| 65 | +* the methodcache of a class has been renamed to an impcache, because that's what its really caching |
| 66 | +* you can now specify that a class should NOT search through its own (non-category) methods with ``MULLE_OBJC_CLASS_DONT_INHERIT_CLASS`` you can also specify to keep the search scope instead of using the superclass inheritance with ``MULLE_OBJC_CLASS_DONT_INHERIT_INHERITANCE`` |
| 67 | +* redid the method calls to support TAO and improved tracing. ``mulle_objc_implementation_invoke`` should now always be used instead of just `(*imp)( self, `_cmd,` `_param`` so that tracing works everywhere (memo: could typedef IMP to `void *` maybe) |
| 68 | +* changed informational cache statistics code |
| 69 | + |
| 70 | +* **BREAKING** protocolclasses +initialize will be called by the adopting class now, it will NOT be called for the protocolclass itself (this is needed to support MulleObjCThreadSafe +initialize to set a bit on the class) |
| 71 | + |
| 72 | +* renamed almost all lookup methods, changed some of the calls (there maybe temporary performance degradation) until this gets benchmarked again |
| 73 | +* renamed methodcache to impcache, because that's what it is (it maps uniqueids to imps, not methods) |
| 74 | + |
| 75 | +* TAO mode (thread affine objects) added |
| 76 | +* reorganized mulle-objc-methodcache code, so that it can be used outside of classes |
| 77 | +* the compiler now emits an origin in the loadinfo, which makes tracking loadinfo problems easier |
| 78 | + |
| 79 | + |
1 | 80 | ## 0.23.0
|
2 | 81 |
|
3 | 82 | * fix endless recursion in to hither unused function `mulle_objc_universeid_is_sane`
|
|
0 commit comments