# 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. ---