Le contenu de ce site a été traduit à l'aide de l'intelligence artificielle (IA) ou d'une technologie de traduction automatique, et peut contenir des erreurs.

Skip to content
Systems

Gestion flexible et optimale des dépendances via Max-SMT

Author

Donald Pinckney (Northeastern), Federico Cassano (Northeastern), Arjun Guha, Jonathan Bell (Northeastern), Massimiliano Culpo (indépendant), Todd Gamblin (Laboratoire national Lawrence Livermore)

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.