blob: 0d504ccc5977d38aa1a94c300c696d96ef25b3a1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
Areas where SLUL is incompatible with the C ABI:
- struct layout (due to tighter packing)
- maybe calling conventions (smaller stack alignment, arena parameter?, etc)
- maybe unavailability of TLS
- maybe async thread termination
- maybe lack of mapping/pinning between "logical threads" and OS threads.
- string pointer encoding
- plus any extensions (e.g. "tight call" with a few or no caller-saved regs)
struct layout:
- simple (C)
- tight-extendable (SLUL, exported structs)
- tight-closed (SLUL, explicitly closed structs.
- Can we make this match what Rust does?)
- XXX Is this different from tight-extendable at all?
We need to be able to specify that a function or data type should use the
C ABI (calling conventions and struct layout etc.).
Functions using the C ABI must not take SLUL structs.
- but private types should work
|