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

Répondre à