ObjFW  History of src/runtime/runtime.h of f9693f45f32c6d84

History of file src/runtime/runtime.h at check-in f9693f45f32c6d84

2017-07-09
15:29
Deleted: runtime: Rename include to ObjFW-RT.h check-in: [5bb771755d] user: js, branch: trunk, size: 0
2017-05-16
23:22
runtime.h: Never undefine _Nullable / _Nonnull file: [134f947253] check-in: [5116a3709c] user: js, branch: trunk, size: 9093 [annotate] [blame] [check-ins using] [diff]
2017-05-14
02:15
runtime: Add nullability annotations file: [c2bf2e5fcb] check-in: [8c7e612885] user: js, branch: trunk, size: 8465 [annotate] [blame] [check-ins using] [diff]
2017-05-13
22:38
Reduce retain + autorelease file: [5f553e5436] check-in: [504e13cf00] user: js, branch: trunk, size: 6909 [annotate] [blame] [check-ins using] [diff]
2017-05-07
20:10
Small code style change

Casts are now written like types in variable declarations. file: [bd21f431a6] check-in: [4af49a13c3] user: js, branch: trunk, size: 7068 [annotate] [blame] [check-ins using] [diff]

2017-04-02
15:30
Make __objc_exec_class() take a void*

This is necessary for ObjC++ with GCC, as otherwise, this generates an
error. Since the objc_abi_module struct is private anyway, there is not
much reason to have the argument of that type. file: [35cbcdf16d] check-in: [4e40a57efa] user: js, branch: trunk, size: 7045 [annotate] [blame] [check-ins using] [diff]

2017-01-09
17:36
Update copyright

Forgot to add 2017, even though I already did quite some changes in
2017. file: [dffb928599] check-in: [44f45c2e35] user: js, branch: trunk, size: 7063 [annotate] [blame] [check-ins using] [diff]

2017-01-08
20:14
Clean up the dllexport mess a little

For many of those, it's not actually required to declare them dllexport.
Declaring them at all is enough to prevent Clang from using its implicit
declaration that is dllimport. file: [33b194a33a] check-in: [f57765b5c6] user: js, branch: trunk, size: 7057 [annotate] [blame] [check-ins using] [diff]

2016-07-03
12:01
runtime: Add objc_enumerationMutation()

This was provided by OFObject before, but should actually be provided by
the runtime, as the compiler can generate code calling into it. file: [3f8b6a0471] check-in: [5e267364ae] user: js, branch: trunk, size: 6446 [annotate] [blame] [check-ins using] [diff]

11:24
runtime: Add class_addMethod()

Also moves out some stuff to functions to be reusable by
class_addMethod(). file: [ee48ca9342] check-in: [d4cae4c963] user: js, branch: trunk, size: 6335 [annotate] [blame] [check-ins using] [diff]

2016-07-02
22:26
runtime: Add objc_{allocate,register}ClassPair file: [ddc272f296] check-in: [5088c339bf] user: js, branch: trunk, size: 6276 [annotate] [blame] [check-ins using] [diff]
2016-05-28
23:02
Add support for zeroing weak references file: [a4ce0a161a] check-in: [03e6d6db98] user: js, branch: trunk, size: 6013 [annotate] [blame] [check-ins using] [diff]
2016-01-03
00:41
Update copyright

While at it, also update the mail address. file: [6046b12ca6] check-in: [2a27cf3000] user: js, branch: trunk, size: 5970 [annotate] [blame] [check-ins using] [diff]

2015-06-14
10:45
Add OF_NONNULL / OF_NULLABLE and use that instead

Using __nonnull directly doesn't work on systems using glibc, as glibc
defines __nonnull as a parameterized define. While this does not fix the
problem of Clang introducing __nonnull even though it conflicts with
glibc, this at least means it's possible again to compile things with
versions of Clang that don't support __nonnull on systems with glibc. file: [abe66d7e40] check-in: [b7097a67b6] user: js, branch: trunk, size: 5966 [annotate] [blame] [check-ins using] [diff]

2015-01-03
20:57
Update copyright file: [d6e7a5e1d6] check-in: [cfd374b906] user: js, branch: trunk, size: 5966 [annotate] [blame] [check-ins using] [diff]
2014-05-15
15:32
Multiple dtable / sparse array improvements

* dtable.m is now the old sparse array, using IMP as type for values and
thus not violating the C standard anymore (functions may not be stored
in void*)
* New sparsearray.m which can work with any size, based on the sparse
array from the fast path of class.m
* Fast path of class.m now uses the new sparsearray.m file: [eb23c8ebea] check-in: [1ebb9eb7b3] user: js, branch: trunk, size: 5960 [annotate] [blame] [check-ins using] [diff]

2014-05-14
20:28
Always use __foo__ instead of foo for attributes file: [e5c437ae29] check-in: [e35b10115e] user: js, branch: trunk, size: 5969 [annotate] [blame] [check-ins using] [diff]
2014-02-12
00:10
Add property introspection file: [b35afd5ad2] check-in: [bb26fbe4b8] user: js, branch: trunk, size: 5961 [annotate] [blame] [check-ins using] [diff]
2014-01-13
13:28
Remove class_isKindOfClass().

This was never used and is not part of the Apple runtime either. file: [d678a70fe3] check-in: [7c0fa1fa85] user: js, branch: trunk, size: 5684 [annotate] [blame] [check-ins using] [diff]

2014-01-05
22:31
Change behaviour of class_getMethodImplementation.

It behaves like in the Apple runtime now. file: [0f2d559e1c] check-in: [3cd9d0ad69] user: js, branch: trunk, size: 5731 [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
Update copyright. file: [ea4bfdaaf7] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 5671 [annotate] [blame] [check-ins using] [diff]
2013-12-27
02:07
Rework forwarding API and ABI.

It matches the Apple API and ABI now and the forwarding handler itself
determines whether it should forward or not.

This moves handling of +[resolve{Class,Instance}Method:] to the runtime
and allows adding new kinds of forwarding without changing the runtime.

Also fixes a potential stack problem in the forwarding for MIPS. file: [86f17c06b0] check-in: [0c332aa2d2] user: js, branch: trunk, size: 5665 [annotate] [blame] [check-ins using] [diff]

2013-12-20
00:14
runtime: More consistency in the API. file: [bd61ad8aad] check-in: [2dec88a9d5] user: js, branch: trunk, size: 5711 [annotate] [blame] [check-ins using] [diff]
2013-12-19
22:21
runtime: Add objc_{get,copy}ClassList(). file: [eb0edb48c5] check-in: [035fa09270] user: js, branch: trunk, size: 5637 [annotate] [blame] [check-ins using] [diff]
20:15
runtime: New API for internal unregister methods. file: [dda778658d] check-in: [b4231b1df9] user: js, branch: trunk, size: 5527 [annotate] [blame] [check-ins using] [diff]
2013-11-23
01:38
Add OF_ROOT_CLASS. file: [b39bf61658] check-in: [48df0f966f] user: js, branch: trunk, size: 5526 [annotate] [blame] [check-ins using] [diff]
2013-11-22
23:24
runtime: Add support for non-fragile ivars. file: [ced3444651] check-in: [3780f1462e] user: js, branch: trunk, size: 5291 [annotate] [blame] [check-ins using] [diff]
2013-07-26
15:21
Add support for objc_msg_lookup_stret.

The assembly implementations of the lookup and forwarding still need to
be adjusted. Those just alias to the non-stret version for now so that
linking works, meaning the behaviour is still the same as without
support for objc_msg_lookup_stret for now. file: [8b0a6c7397] check-in: [9713ad857d] user: js, branch: trunk, size: 5296 [annotate] [blame] [check-ins using] [diff]

2013-07-23
20:46
configure: Fix warning about missing spinlocks.

Also includes a few style improvements for runtime.h. file: [d76a124e2f] check-in: [26f6bd3396] user: js, branch: trunk, size: 5137 [annotate] [blame] [check-ins using] [diff]

2013-03-04
17:20
Replace BOOL with bool.

The only places where BOOL is left are those where they are required by
the ABI. file: [32f939b80e] check-in: [c5ef582958] user: js, branch: trunk, size: 5141 [annotate] [blame] [check-ins using] [diff]

2013-01-15
01:49
runtime.h: Add extern "C". file: [577c4aab36] check-in: [94b66c350d] user: js, branch: trunk, size: 5120 [annotate] [blame] [check-ins using] [diff]
2013-01-09
22:24
Update copyright. file: [707672b98c] check-in: [813c00ccf0] user: js, branch: trunk, size: 5053 [annotate] [blame] [check-ins using] [diff]
2012-12-06
01:19
Don't inline runtime functions. file: [16313bd3af] check-in: [7fe9b2e320] user: js, branch: trunk, size: 5047 [annotate] [blame] [check-ins using] [diff]
01:08
runtime.h: Remove functions which are elsewhere. file: [537e4b3b12] check-in: [caea9cb377] user: js, branch: 0.7, size: 5511 [annotate] [blame] [check-ins using] [diff]
01:08
runtime.h: Remove functions which are elsewhere. file: [311da7e0b4] check-in: [5c5ae52ccd] user: js, branch: trunk, size: 5549 [annotate] [blame] [check-ins using] [diff]
2012-11-30
16:09
Make runtime API more similar to Apple's.

This makes it easier to use runtime functions in portable code. file: [d874182359] check-in: [120caad331] user: js, branch: trunk, size: 5637 [annotate] [blame] [check-ins using] [diff]

15:37
Remove functions from runtime.h that don't exist. file: [865d6eebac] check-in: [2b0389eeeb] user: js, branch: trunk, size: 5599 [annotate] [blame] [check-ins using] [diff]
2012-09-06
19:13
Add objc_{construct,destruct}Instance(). file: [995079990b] check-in: [20c584252c] user: js, branch: trunk, size: 5672 [annotate] [blame] [check-ins using] [diff]
2012-08-19
21:27
Add more ARC type qualifiers. file: [b190fb62d1] check-in: [bab9dd49fe] user: js, branch: trunk, size: 5584 [annotate] [blame] [check-ins using] [diff]
2012-08-11
11:55
runtime.h: Fix C++. file: [802118dfd1] check-in: [c2a3a3e078] user: js, branch: trunk, size: 5412 [annotate] [blame] [check-ins using] [diff]
2012-08-06
20:27
Make class_isMetaClass() ARC-compatible.

Also adds a missing OF_RETURNS_INNER_POINTER. file: [47cf79266e] check-in: [0b32d65e0c] user: js, branch: trunk, size: 5394 [annotate] [blame] [check-ins using] [diff]

2012-08-05
16:52
Fix a possible race condition in initialize_class. file: [03d74b30fd] check-in: [8f02ff02dc] user: js, branch: trunk, size: 5360 [annotate] [blame] [check-ins using] [diff]
2012-08-04
00:50
runtime.h: Properly check for __has_feature. file: [1dc0fb3f7f] check-in: [d690b3e135] user: js, branch: trunk, size: 5323 [annotate] [blame] [check-ins using] [diff]
2012-08-03
20:49
Add class_isMetaClass(). file: [da40cdf48e] check-in: [c50d4f7837] user: js, branch: trunk, size: 5291 [annotate] [blame] [check-ins using] [diff]
18:45
Add ARC type qualifiers. file: [db1c5610a1] check-in: [881cfff24e] user: js, branch: trunk, size: 5144 [annotate] [blame] [check-ins using] [diff]
2012-07-31
11:26
runtime: Export structs for properties. file: [50de71845f] check-in: [8a366ec6f7] user: js, branch: trunk, size: 4981 [annotate] [blame] [check-ins using] [diff]
2012-07-17
19:44
Export structs for ivar introspection. file: [557d11af3b] check-in: [7cab5285df] user: js, branch: trunk, size: 4147 [annotate] [blame] [check-ins using] [diff]
2012-07-14
20:00
New autorelease pools.

This uses the runtime's autorelease pools and implements autorelease
pools in the ObjFW runtime. It therefore uses ObjFW's autorelease pools
when using the ObjFW runtime and Apple's autorelease pools when using
the Apple runtime.

These new pools should be ARC-compatible now and finally, it should be
possible to mix OFAutoreleasePools and NSAutoreleasePools again, even
@autoreleasepool is allowed in the mix now. This also means the old
bridge to NSAutoreleasePool should not be required anymore, as both use
the runtime's autorelease pools now.

As a bonus, it's significantly faster to use the ObjFW runtime with
ObjFW's autorelease pools than to use Apple's runtime with Apple's
autorelease pools, as a quick benchmark using OFXMLParser on large files
showed. (Note: This is not only due to the different autorelease pools,
but also due to the fact that even with the same autorelease pools it is
faster using the ObjFW runtime, as can be seen in versions prior to this
commit.) file: [10b66bd071] check-in: [f5927f8a84] user: js, branch: trunk, size: 3978 [annotate] [blame] [check-ins using] [diff]

2012-07-12
02:04
Let object_setClass() return the old class. file: [dd41eb5b33] check-in: [52ddac07da] user: js, branch: trunk, size: 3820 [annotate] [blame] [check-ins using] [diff]
01:11
Add object_{set,get}Class(Name). file: [ce76e78d32] check-in: [9514bfbc12] user: js, branch: trunk, size: 3782 [annotate] [blame] [check-ins using] [diff]
2012-07-03
15:44
runtime: Add exception handling. file: [37bafc00ae] check-in: [a230197b48] user: js, branch: runtime, size: 3423 [annotate] [blame] [check-ins using] [diff]
2012-04-08
14:14
Add protocol_{getName,isEqual,conformsToProtocol}. file: [97bbb9569f] check-in: [b8744d8d68] user: js, branch: runtime, size: 3257 [annotate] [blame] [check-ins using] [diff]
14:06
Don't have any methods in Protocol.

Messaging protocols is deprecated and unreliable. Thus we shouldn't do
it in the runtime either. file: [a7ea76e777] check-in: [df24f80ab0] user: js, branch: runtime, size: 3094 [annotate] [blame] [check-ins using] [diff]

2012-04-06
17:43
objc_abi_protocol_list does not exist anymore. file: [117a048a91] check-in: [5b29d50e2e] user: js, branch: runtime, size: 3066 [annotate] [blame] [check-ins using] [diff]
12:14
Make objc_msg_lookup_super public. file: [7dcff464ae] check-in: [10b3fbc5fc] user: js, branch: runtime, size: 3070 [annotate] [blame] [check-ins using] [diff]
2012-03-23
14:54
Add class_getMethodImplementation(). file: [a509668aea] check-in: [46105d56c7] user: js, branch: runtime, size: 2963 [annotate] [blame] [check-ins using] [diff]
2012-03-06
16:24
objc_replace_{class,instance}_method() -> class_replaceMethod(). file: [5e1f1b3197] check-in: [2e39765aa2] user: js, branch: runtime, size: 3004 [annotate] [blame] [check-ins using] [diff]
2012-03-05
00:01
Add sel_isEqual(). file: [bd5f7c0ee0] check-in: [7215a36f5a] user: js, branch: runtime, size: 3055 [annotate] [blame] [check-ins using] [diff]
2012-03-04
23:48
Better dissection of what should be public and private. file: [95328bedcc] check-in: [31e7b3d756] user: js, branch: runtime, size: 3020 [annotate] [blame] [check-ins using] [diff]
20:20
Added: Import and integrate ObjFW-RT. file: [92e1b049bf] check-in: [129f90b580] user: js, branch: runtime, size: 2687 [annotate] [blame] [check-ins using]