|
| 1 | +## 0.24.0 |
| 2 | + |
| 3 | + |
| 4 | +feat: improve thread safety and object lifecycle management |
| 5 | + |
| 6 | +* Enhance thread affinity (TAO) support |
| 7 | + - Add mulleTAOStrategy parameter to mulleGainAccess for safer thread transfers |
| 8 | + - Improve thread safety checks and validation |
| 9 | + - Add documentation for TAO principles and testing |
| 10 | + |
| 11 | +* Refactor object lifecycle management |
| 12 | + - Rename NSCopyObjectWithAllocator to MulleObjCInstanceCopyWithAllocator |
| 13 | + - Change MulleObjCInstanceDeallocate to `_MulleObjCInstanceFree` |
| 14 | + - Remove NS prefix from linkable symbols for better Darwin compatibility |
| 15 | + - Add `mulle_atomic_id_t` for atomic ivar access |
| 16 | + |
| 17 | +* Improve thread and locking infrastructure |
| 18 | + - Simplify MulleObject locking implementation |
| 19 | + - Move MulleObjCLockFoundation into MulleObjC |
| 20 | + - Rename MulleObject to MulleDynamicObject |
| 21 | + - Update NSThread API for clearer thread lifecycle management |
| 22 | + - Add MulleThreadGetOrCreateCurrentThread function |
| 23 | + |
| 24 | +* Other improvements |
| 25 | + - Add support for C-array, struct and union handling in NSInvocation |
| 26 | + - Add class interposing capability |
| 27 | + - Improve byte swapping and endian handling |
| 28 | + - Add new container key/value callbacks |
| 29 | + - Fix NSRange accessor functions |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +* **BREAKING** NSCopyObjectWithAllocator is now MulleObjCInstanceCopyWithAllocator |
| 34 | +* **BREAKING** MulleObjCInstanceDeallocate is now `_MulleObjCInstanceFree` for consistency |
| 35 | + |
| 36 | +* MulleObjC no longer defines any linkable symbols with `_NS` or NS prefix. All NS... functions are now static inline. This makes it easier on darwin to coexist with Apple Objective-C |
| 37 | + |
| 38 | +* adapt to changes in mulle-objc-runtime |
| 39 | +* improved NSInvocation retain/release of arguments, now can also do C-array, structs and unions |
| 40 | +* new feature "interposing" of a class between two other classes |
| 41 | +* new function `MulleThreadGetOrCreateCurrentThread` |
| 42 | +* NSThread mulleStartUndetached is now just mulleStart, but the old method still works |
| 43 | +* new type `mulle_atomic_id_t` for convenient atomic access to id ivars |
| 44 | +* new function `MulleObjC_strdup` |
| 45 | +* byte swapping and endian functions have been moved to mulle-c11 |
| 46 | +* new global variable MulleObjCDebugElideAddressOutput for test output |
| 47 | +* new macros `MULLE_OBJC_CLASS_CAST` and `MULLE_OBJC_PROTOCOL_CAST` and related macros |
| 48 | +* new key/value callbacks `_MulleObjCContainerCopiedCStringIntegerValueCallback,` `_MulleObjCContainerIntegerKeyCopiedCStringValueCallback,` `_MulleObjCContainerCopiedCStringPointerValueCallback,` `_MulleObjCContainerPointerKeyCopiedCStringValueCallback` |
| 49 | +* new functions NSRangeGetLocation, NSRangeGetLength, NSRangeGetMax, ... |
| 50 | + |
| 51 | +* `mulleGainAccess` no longer returns self |
| 52 | +* the Spam functions that used to do call chains, now use `mulle_objc_class_search` and perform more sensibly |
| 53 | +* new method `mulleSetThredSafe:`, for private objects that are part of a locking object (e.g. NSMutableArray ivar) |
| 54 | + |
| 55 | +* renamed ``_mulle_objc_autorelease_object`` to ``_mulle_objc_autorelease_object`` for consistency |
| 56 | +* changed the locking code used by MulleObject to something simpler with the help of the new mulle-objc-runtime |
| 57 | +* renamed methods that operate on already autoreleased objects in a `NSAutoreleasePool` to "PoolObjects" |
| 58 | +* renamed some ``_NSThread`` functions to `MulleThread` for consistency |
| 59 | + |
| 60 | +* moved MulleObjCLockFoundation into MulleObjC |
| 61 | +* renamed MulleObject to MulleDynamicObject |
| 62 | +* renamed MulleLockingObject to... MulleObject (!) (by default it doesn't lock, unless your subclass adds protocols) |
| 63 | + |
| 64 | + |
| 65 | +* **BREAKING** renamed a lot of NSAutoreleasePool underscore methods to mulle, making them less private |
| 66 | + |
| 67 | +* added support for new double and float TPS |
| 68 | +* NSObject now gains a lot of functionality from protocolclass MulleObjCRuntimeObject |
| 69 | +* new protocol MulleObjCContainerProperty to match @property( container) expectations |
| 70 | +* NSThread is now NSInvocation based |
| 71 | + |
| 72 | +* MulleObjC has now a notion about threadsafe instances (`@protocol MulleObjcThreadSafe`) and how to transfer access to a not-threadsafe instance between threads (`-mulleGainAccess`...) |
| 73 | +* added a few more useful container callbacks |
| 74 | +* adapted to changes in the mulle-objc-runtime |
| 75 | +* made `NSThread` more threadsafe |
| 76 | +* **BREAKING** `-copy` is basically supposed to be used only by properties and ivar accessors now. `NSCopyObject` and the default -copy implementation is now aligned with `NSMutableCopying` where it makes more sense. Though `mutableCopy` is deprecated. |
| 77 | +* **BREAKING** remove `MulleObjCIMPTraceCall` |
| 78 | + |
| 79 | + |
1 | 80 | ## 0.23.0 |
2 | 81 |
|
3 | 82 | * moved NSInteger and BOOL to mulle-c11, this only breaks stuff if you included the header directly |
|
0 commit comments