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