vivace es una reimplementación en Rust de los comandos de gestión de dependencias de Composer. La versión 0.4.0 añade composer update, sumándose al soporte de composer install ya presente en versiones anteriores. El objetivo declarado es una equivalencia byte a byte: con el mismo composer.json y composer.lock, vivace genera el mismo directorio vendor/ y el mismo archivo de bloqueo que Composer 2.10.3.
git clone https://github.com/Adelagric/vivace && cd vivace
cargo build --release
fixtures/make.sh
harness/update.sh
harness/diff-vendor.shPara lograr esa paridad en update, el autor portó el resolutor real de Composer en lugar de escribir un algoritmo nuevo. Se trasladaron el pool builder, el pool optimizer, el rule set, el solucionador CDCL, la política de versiones y el escritor del lock. Un algoritmo de resolución distinto elegiría versiones de paquetes diferentes cuando el grafo de dependencias es ambiguo, lo que generaría un lock imposible de comparar con el de Composer.
La validación se hace contra instantáneas congeladas de Packagist. La prueba compara primero el pool de candidatos, luego la secuencia completa de decisiones del solucionador, leída directamente del objeto Solver interno de Composer, después las operaciones resultantes y por último el archivo de bloqueo final. Los proyectos de prueba incluyen Laravel, la aplicación de demostración de Symfony, Sylius, rector-src y un recommended-project de Drupal, además de casos sintéticos más pequeños creados para forzar backtracking, un conjunto de dependencias irresoluble, alias raíz y paquetes virtuales.
Cualquiera puede comprobarlo localmente. Tras clonar el repositorio, se ejecuta cargo build --release, luego fixtures/make.sh para descargar los proyectos de prueba, y después harness/update.sh y harness/diff-vendor.sh, que comparan la salida de vivace con ejecuciones reales de Composer. En un proyecto propio funciona igual: vivace update --no-install junto a composer update --no-install, comparando los dos archivos composer.lock. El autor trata cualquier diferencia no vacía como un error a reportar.
vivace no ejecuta scripts PHP durante la instalación o la actualización. Tres plugins comunes de Composer, symfony/runtime, composer/installers y drupal/core-composer-scaffold, se emulan y se verifican contra el comportamiento real de los plugins; con cualquier otro plugin, vivace recurre a ejecutar el binario real de composer. La herramienta todavía no soporta los comandos require y remove, actualizaciones parciales como composer update vendor/name, repositorios VCS o path, las explicaciones de Composer sobre conjuntos irresolubles, ni Windows. El proyecto está alojado en github.com/Adelagric/vivace, con notas de versión en CHANGELOG.md y la lista de escenarios sin probar en HANDOVER.md.




Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.