I contenuti di questo sito sono stati tradotti mediante intelligenza artificiale (IA) o tecnologia di traduzione automatica e potrebbero contenere errori.

Skip to content
Systems

Gestione flessibile e ottimale delle dipendenze tramite Max-SMT

Author

Donald Pinckney (Northeastern), Federico Cassano (Northeastern), Arjun Guha, Jonathan Bell (Northeastern), Massimiliano Culpo (indipendente), Todd Gamblin (Lawrence Livermore National Lab)

Venue

Conferenza internazionale IEEE/ACM sull'ingegneria del software (ICSE), 2023

Abstract

I gestori di pacchetti come NPM sono diventati essenziali per lo sviluppo di software. Il repository NPM ospita oltre 2 milioni di pacchetti e serve oltre 43 miliardi di download ogni settimana. Sfortunatamente, il risolutore di dipendenze di NPM presenta diverse carenze. 1) NPM è avido e spesso non riesce a installare le versioni più recenti delle dipendenze; 2) l'algoritmo di NPM porta a dipendenze duplicate e codice gonfiato, il che è particolarmente negativo per le applicazioni web che devono ridurre al minimo le dimensioni del codice; 3) anche l'algoritmo di correzione delle vulnerabilità di NPM è avido e può persino introdurre nuove vulnerabilità; e 4) la capacità di NPM di duplicare le dipendenze può compromettere i framework stateful e richiede molta attenzione per essere aggirata. Sebbene gli strumenti esistenti cerchino di affrontare questi problemi, essi sono o instabili, si basano su modifiche a posteriori all'albero delle dipendenze, non garantiscono l'ottimalità, oppure non sono componibili. Presentiamo Pacsolve, un framework unificante e un'implementazione per la risoluzione delle dipendenze che consente vincoli personalizzabili e obiettivi di ottimizzazione. Utilizziamo Pacsolve per costruire Maxnpm, un sostituto completo e immediato di NPM, che consente agli sviluppatori di combinare più obiettivi durante l'installazione delle dipendenze. Valutiamo Maxnpm con un ampio campione di pacchetti provenienti dall'ecosistema NPM e dimostriamo che è in grado di: 1) ridurre un numero maggiore di vulnerabilità nelle dipendenze rispetto allo strumento di auditing di NPM nel 33% dei casi; 2) scegliere dipendenze più recenti rispetto a NPM nel 14% dei casi; e 3) scegliere un numero inferiore di dipendenze rispetto a NPM nel 21% dei casi. Tutto il nostro codice e i nostri dati sono aperti e disponibili.