Skip to content

Commit 9195fdb

Browse files
author
Nat!
committed
fix build system for -fobjc-tao flag mpa -p mulle-project-commit --ignore-untracked --boring --safe-amend fix build system for -fobjc-tao flag
1 parent a71853c commit 9195fdb

File tree

2 files changed

+109
-6
lines changed

2 files changed

+109
-6
lines changed

RELEASENOTES.md

+79
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,82 @@
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+
180
## 0.23.0
281

382
* fix endless recursion in to hither unused function `mulle_objc_universeid_is_sane`

cmake/share/CompilerDetectionC.cmake

+30-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)