This commit is contained in:
2026-09-12 08:56:27 +02:00
parent 426aa92d0d
commit 18306bdc8c
116 changed files with 11080 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
# 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.
---