On Mon, 2026-06-08 at 10:14 +0200, Jean-Marc wrote: > salut la liste, > > Connaissez-vous un logiciel/outil en paquet Debian qui permette la > simulation d'API's ?
Il faudrait d'abord définir ce qu'est une API. Une bibliothèque partagée (shared library) sous Debian fournit une API (application programmable interface), c'est à dire un ensemble de fonctions compilées (depuis du code en C, C++, Rust, ...). Cette bibliothèque partagée est un fichier (au format ELF, voir https://man7.org/linux/man-pages/man5/elf.5.html ...). Elle peut être chargée à l'exécution par la fonction dlopen(3). Voir https://man7.org/linux/man-pages/man3/dlopen.3.html Après son chargement, on peut y retrouver l'adresse d'une fonction compilée par la fonction dlsym(3). Voir https://man7.org/linux/man-pages/man3/dlsym.3.html En C++ il faut prendre des précautions supplémentaires documentées dans https://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/C++-dlopen.pdf Pragmatiquement, un processus Linux peut charger ainsi des centaines de milliers de bibliothèques partagées distinctes (ou greffons, en anglais plugins), comme le montre expérimentalement https://github.com/bstarynk/misc-basile/blob/master/manydl.c Une autre façon de générer puis charger du code dynamiquement à la volée peut passer par des bibliothèques libres, dont https://www.gnu.org/software/lightning/ et https://gcc.gnu.org/onlinedocs/jit/ et https://asmjit.com/ Des programmes libres comme les compilateurs SBCL.org ou ocaml.org peuvent aussi générer du code machine dynamiquement ou à la volée. La génération de code C ou C++ temporaire (et compilé en des greffons chargés à la volée) est aussi possible et compatible, sur nos processeurs rapides, avec une interactivité, comme le montre par exemple Bigloo. https://github.com/manuel-serrano/bigloo Il peut être utile d'utiliser dans un tel cas un ramasse-miettes conservatif (comme https://fr.wikipedia.org/wiki/Boehm_garbage_collector utilisé dans inkscape.org ....) ou précis comme https://github.com/bstarynk/qish-gc/ Un autre sens d'API existe, celui des serveurs Web ou de FastCGI. Dans tous les cas on peut réaliser des simulateurs d'API à un coût de dévelopement raisonnable. La première difficulté est bien évidemment de définir ce qu'on appelle "Application Binary Interface" et ensuite de préciser et documenter l'interface qu'on souhaite. Le compilateur GCC (voir gcc.gnu.org et https://gcc.gnu.org/onlinedocs/gccint/Plugins.html ...) comme l'éditeur GNU emacs (voir https://www.gnu.org/software/emacs/ ...) fournissent des exemples d'API et documentent celles-ci (les deux exigent de charger une bibliothèque partagée en logiciel libre). Librement -- Basile STARYNKEVITCH <[email protected]> 8 rue de la Faïencerie http://starynkevitch.net/Basile/ 92340 Bourg-la-Reine https://github.com/bstarynk France https://github.com/RefPerSys/RefPerSys https://orcid.org/0000-0003-0908-5250

