Gestion flexible et optimale des dépendances via Max-SMT
Author
Venue
Conférence internationale IEEE/ACM sur le génie logiciel (ICSE), 2023
Abstract
Les gestionnaires de paquets tels que NPM sont devenus indispensables au développement logiciel. Le référentiel NPM héberge plus de 2 millions de paquets et génère plus de 43 milliards de téléchargements chaque semaine. Malheureusement, le résolveur de dépendances de NPM présente plusieurs lacunes. 1) NPM est gourmand et ne parvient souvent pas à installer les versions les plus récentes des dépendances ; 2) L'algorithme de NPM entraîne des dépendances en double et un code surchargé, ce qui est particulièrement néfaste pour les applications web qui doivent réduire au minimum la taille du code ; 3) L'algorithme de correction des vulnérabilités de NPM est également gourmand et peut même introduire de nouvelles vulnérabilités ; et 4) La capacité de NPM à dupliquer les dépendances peut perturber les frameworks avec état et nécessite beaucoup de soin pour être contournée. Bien que les outils existants tentent de résoudre ces problèmes, ils sont soit fragiles, soit dépendants de modifications a posteriori de l'arborescence des dépendances, soit ne garantissent pas l'optimalité, soit ne sont pas composables. Nous présentons Pacsolve, un framework unificateur et une implémentation pour la résolution des dépendances qui permet de définir des contraintes et des objectifs d'optimisation personnalisables. Nous utilisons Pacsolve pour développer Maxnpm, un remplacement complet et prêt à l'emploi de NPM, qui permet aux développeurs de combiner plusieurs objectifs lors de l'installation des dépendances. Nous évaluons Maxnpm à l'aide d'un large échantillon de paquets issus de l'écosystème NPM et montrons qu'il est capable : 1) de réduire davantage de vulnérabilités dans les dépendances que l'outil d'audit de NPM dans 33 % des cas ; 2) de choisir des dépendances plus récentes que NPM dans 14 % des cas ; et 3) de choisir moins de dépendances que NPM dans 21 % des cas. L'ensemble de notre code et de nos données est ouvert et disponible.
