v0.2.12
This commit is contained in:
52
chapters/029-ffi-et-abi.md
Normal file
52
chapters/029-ffi-et-abi.md
Normal 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.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user