Invocation et exécution ABI
Statut documentaire : reference — voir Maturité et preuves.
Identité d'invocation
Chaque membre appelable possède une identité stable :
(moduleId, typeId, methodId, callKind)
callKind distingue constructeur, statique et instance. Le descripteur indique aussi séparément si un receiver est requis.
Pipeline d'exécution
flowchart LR
DESC[Descripteur de méthode] --> VALIDATE[Valider receiver et arité]
ARGS[Valeurs ABI typées] --> PACK[Construire le record d'arguments]
PACK --> CALL[Invoquer le module natif]
DESC --> CALL
CALL --> CODE[Vérifier le code résultat]
CODE --> DECODE[Décoder le résultat]
DECODE --> OWN[Conserver l'ownership]
Le caller ne construit pas manuellement une structure C. Le packing est piloté par le descripteur chargé depuis le manifeste.
Règles de receiver
Un membre qui exige un receiver échoue si le handle manque ; un membre qui n'en accepte pas échoue si un handle est fourni. Cela évite de faire traverser à la frontière native une confusion constructeur/statique/instance.
Arité et layout
Le builder vérifie le nombre d'arguments, la cohérence du nombre de paramètres, la taille du record, les offsets et tailles, la direction supportée, le type de valeur et la taille des pointeurs. Le buffer est initialisé à zéro avant écriture.
Résultats natifs
Le chemin générique actuellement certifié gère void, i32, pointeur et handle. Un code module non réussi devient une erreur d'exécution enrichie du texte d'erreur du module lorsqu'il est disponible.
Libération après exécution
Le décodage conserve les informations d'ownership. Un handle retourné transporte les métadonnées nécessaires pour savoir s'il doit ensuite être libéré via le module.
Chemin testé de bout en bout
Les tests actuels compilent des expressions FPL en invocations ABI puis exécutent :
expression source
-> résolution ABI
-> descripteur manifeste
-> buffer d'arguments
-> module natif
-> valeur FPL décodée
Les scénarios couvrent constructeur, appel d'instance, retour de pointeur et release explicite d'un handle possédé.