1.2 KiB
1.2 KiB
29. FFI et ABI
29.1 ABI C — V1 REQUIS — FIGÉ
Le premier ABI externe officiellement ciblé est C :
extern "C"
29.2 extern — V1 REQUIS — FIGÉ EN PRINCIPE
extern est réservé aux déclarations qui représentent réellement une frontière de linkage/ABI.
Typiquement :
extern "C" func
unsafe extern "C" func
extern "C" union
unsafe extern "C" union
Pas de extern décoratif sur classes/interfaces/méthodes ordinaires.
29.3 FFI safety — V1 REQUIS — FIGÉ EN PRINCIPE
Une fonction externe n'est pas automatiquement unsafe par simple fait d'être externe, mais toute API dont l'appelant doit respecter des invariants externes non vérifiables doit être déclarée unsafe.
29.4 Layout/interop — V1 REQUIS — À FINALISER
À définir :
C struct layout
C enum mapping
raw pointers
strings C
callbacks
function pointers
calling conventions
variadic C
alignment/packing
ownership across FFI
error propagation across ABI
29.5 Dynamic loading — V1 RÉSERVÉ / SDK
Le chargement dynamique runtime (dlopen/LoadLibrary-like) est prévu comme fonctionnalité système/SDK et probablement unsafe, mais n'est pas une primitive fondamentale du langage.