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

1.4 KiB

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 :

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

public unsafe union RawValue

permet des types mémoire triviaux dont certaines représentations peuvent être invalides :

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 :

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.