Files
saselang-bible/chapters/012-unions.md
2026-09-12 08:56:27 +02:00

55 lines
1.4 KiB
Markdown

# 12. Unions
## 12.1 `union` sûre — V1 REQUIS — FIGÉ
Une `union` sûre est un overlay mémoire nominal limité à des représentations binaires compatibles dont chaque motif de bits est acceptable selon les règles définies.
V1 vise initialement les familles primitives numériques :
```text
int*
uint*
float*
```
Tous les champs recouvrent la même zone mémoire.
La taille correspond au membre le plus grand, avec alignement/padding requis.
Lire une autre vue est une réinterprétation de bits définie par Saselang.
Pas de tag, pas de `match` exhaustif automatique.
## 12.2 `unsafe union` — V1 REQUIS — FIGÉ EN PRINCIPE
```text
public unsafe union RawValue
```
permet des types mémoire triviaux dont certaines représentations peuvent être invalides :
```text
bool
char
raw pointers
fixed compatible arrays
FFI-safe trivial structs
compatible unsafe unions
```
Les types avec ownership/lifecycle non trivial tels que `String`, fichiers, classes ou collections dynamiques ne doivent pas être stockables arbitrairement dans une raw union V1.
Les règles exactes de validité et d'accès sont liées au modèle mémoire V1.
## 12.3 ABI C — V1 REQUIS — À FINALISER
Le linkage/ABI est orthogonal à `unsafe` :
```text
public unsafe extern "C" union NativeValue
```
La syntaxe canonique des unions FFI est conservée ; la liste exacte des layouts garantis doit être finalisée avec la FFI.
---