Files
saselang-bible/chapters/029-ffi-et-abi.md
2026-09-12 08:56:27 +02:00

53 lines
1.2 KiB
Markdown

# 29. FFI et ABI
## 29.1 ABI C — V1 REQUIS — FIGÉ
Le premier ABI externe officiellement ciblé est C :
```text
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 :
```text
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 :
```text
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.
---