16. Backend C++ et interop
16. Backend C++ et interop
Vitte peut gĂ©nĂ©rer du C++ pour tirer parti dâoutils existants. Lâobjectif nâest pas de « cacher » le C++, mais dâoffrir une voie dâintĂ©gration claire.
Interop simple
Vous pouvez appeler une fonction externe. Vous pouvez lier une bibliothĂšque existante.
Lâimportant est de documenter lâABI et la convention dâappel.
PensĂ©e âfrontiĂšreâ
Lâinterop est une frontiĂšre : vous passez dâun monde Ă lâautre. Assurezâvous que chaque cĂŽtĂ© sait ce que lâautre attend.
StratĂ©gie dâintĂ©gration
Commencez par une fonction simple, documentĂ©e, et testĂ©e. Puis Ă©largissez progressivement. Lâinterop rĂ©ussie est une sĂ©rie dâĂ©tapes petites, jamais un âbig bangâ.
Erreurs courantes
Oublier la convention dâappel. MĂ©langer des types qui ne partagent pas la mĂȘme taille ou le mĂȘme alignement. Ne pas tester lâinterface cĂŽtĂ© C/C++ et cĂŽtĂ© Vitte.
Ă retenir
InteropĂ©rer, câest accepter deux mondes. Le contrat dâinterface est ce qui Ă©vite les surprises.
Exemple guidé : appeler une fonction C
DĂ©finissez une fonction extern, documentez son ABI, puis appelezâla. Testez avec un petit programme C sĂ©parĂ©.
Checklist interop
ABI documentée. Types alignés. Tests croisés Vitte/C.
Exercice : alignement
DĂ©finissez une structure cĂŽtĂ© C et cĂŽtĂ© Vitte. VĂ©rifiez que la taille et lâalignement correspondent. Câest une erreur classique quand on dĂ©bute en interop.
Code complet (API actuelle)
#[extern]
proc c_add(x: i32, y: i32) -> i32
entry main at core/app {
let v = c_add(1, 2)
return v
}
API idéale (future)
Un module std/ffi avec des helpers de conversion réduirait la friction.