• [^] # Re: Présentation cffi

    Posté par . En réponse à la dépêche PyParis 2017 — fin des inscriptions dans 10 jours. Évalué à 2.

    cffi fonctionne grosso modo comme ctypes, mais avec une API différente. Selon les personnes, on préférera cffi ou ctypes (l'argument « il suffit de copier/coller les entêtes C » pour cffi est un peu simpliste : vu la complexité de certains entêtes, il faudra élaguer ou restructurer... par ailleurs, si on wrappe autre chose qu'une bibliothèque C, cela devient carrément un inconvénient).

    Comparé à swig ou Cython, cela n'a rien à voir : les premiers te compilent une extension C à l'avance, que tu peux ensuite distribuer. cffi et ctypes créent un wrapper au runtime. Cela a des avantages et des inconvénients : l'avantage est de ne pas nécessiter de distribuer une extension binaire séparée pour chaque plateforme ; l'inconvénient est de perdre facilement la sécurité du typage C (sécurité toute relative, certes), car les déclarations cffi ou ctypes peuvent très bien se retrouver désynchronisées avec la version installée de la bibliothèque externe (dit autrement : si cette bibliothèque ne garantit pas la même ABI d'une version sur l'autre, ton wrapper cfii ou ctypes peut être assez plantogène). Par ailleurs, cffi et ctypes peuvent avoir un surcoût non négligeable en performances.