On peut construire des bibliothèques partagées en Rust. En particulier pour les utiliser dans d'autres langages compatibles avec l'ABI C. Il y en a pléthore pour Python d'ailleurs car c'est l'approche naturelle quand on veut accélérer des parties calculatoires dans ce langage interprété.
avoir un linker et un partage au niveau du binaire
* Moins d'espace disque ;
* Réutilisation, en mémoire, des pages RO (la section code des librairies) ;
* Load (beaucoup) plus rapide du code ré-allocatable ;
Sans parler des m.a.j. fonctionnelles ou de sécurité.
Cependant, je suis moins convaincu par ces arguments pour plusieurs raisons :
Nos PC ont maintenant des GB de RAM, plus des MB ; la réutilisation de quelques pages de mémoire devient moins intéressants
Les binaires Rust font du load dynamiques des bibliothèques des plus communes : libc, libm.
Plus important, l'approche de Rust est de faire une compilation des dépendances à partir des sources afin, grâce à une analyse statique, de n'embarquer que les fonctions appelées et donc de n'avoir dans le binaire que les instructions réellement utiles à l'application.
Cela a pour effet - outre le fait d'augmenter le temps de compilation :( - de minimiser la taille du binaire à charger, de garantir la sécurité mémoire, mais aussi de réduire la surface d'attaque.
De toute façon, le développeur a toute latitude pour utiliser des bibliothèques chargées dynamiquement, au travers des FFI.
[^] # Re: On s’en fiche que ça soit « écrit en Rust »
Posté par steph1978 . En réponse au lien Outil de renommage en masse de fichiers écrit en Rust. Évalué à 2.
On peut construire des bibliothèques partagées en Rust. En particulier pour les utiliser dans d'autres langages compatibles avec l'ABI C. Il y en a pléthore pour Python d'ailleurs car c'est l'approche naturelle quand on veut accélérer des parties calculatoires dans ce langage interprété.
Cependant, je suis moins convaincu par ces arguments pour plusieurs raisons :
Nos PC ont maintenant des GB de RAM, plus des MB ; la réutilisation de quelques pages de mémoire devient moins intéressants
Les binaires Rust font du load dynamiques des bibliothèques des plus communes : libc, libm.
Plus important, l'approche de Rust est de faire une compilation des dépendances à partir des sources afin, grâce à une analyse statique, de n'embarquer que les fonctions appelées et donc de n'avoir dans le binaire que les instructions réellement utiles à l'application.
Cela a pour effet - outre le fait d'augmenter le temps de compilation :( - de minimiser la taille du binaire à charger, de garantir la sécurité mémoire, mais aussi de réduire la surface d'attaque.
De toute façon, le développeur a toute latitude pour utiliser des bibliothèques chargées dynamiquement, au travers des FFI.