vivace est une réimplémentation en Rust des commandes de gestion des dépendances de Composer. La version 0.4.0 ajoute composer update, en complément du support de composer install déjà présent dans les versions précédentes. L'objectif affiché est une équivalence byte à byte : à partir des mêmes composer.json et composer.lock, vivace produit le même répertoire vendor/ et le même fichier de verrouillage que Composer 2.10.3.

terminal
git clone https://github.com/Adelagric/vivace && cd vivace
cargo build --release
fixtures/make.sh
harness/update.sh
harness/diff-vendor.sh

Pour atteindre cette parité sur update, l'auteur a porté le résolveur réel de Composer plutôt que d'écrire un nouvel algorithme. Ont été repris le pool builder, le pool optimizer, le rule set, le solveur CDCL, la politique de versions et l'écriture du lock. Un algorithme de résolution différent choisirait d'autres versions de paquets dès que le graphe de dépendances devient ambigu, ce qui rendrait le fichier lock incomparable avec celui de Composer.

La validation s'appuie sur des instantanés figés de Packagist. Le test compare d'abord le pool de candidats, puis la séquence complète des décisions du solveur, lue directement dans l'objet Solver interne de Composer, puis les opérations résultantes et enfin le fichier lock final. Les projets de test incluent Laravel, l'application de démonstration Symfony, Sylius, rector-src et un recommended-project Drupal, ainsi que de petits cas synthétiques conçus pour déclencher du backtracking, un ensemble de dépendances insoluble, des alias racine et des paquets virtuels.

Chacun peut vérifier la démonstration localement. Après avoir cloné le dépôt, il faut lancer cargo build --release, puis fixtures/make.sh pour récupérer les projets de test, puis harness/update.sh et harness/diff-vendor.sh, qui comparent la sortie de vivace à de vraies exécutions de Composer. Sur un projet existant, on peut de la même façon lancer vivace update --no-install à côté de composer update --no-install et comparer les deux fichiers composer.lock. L'auteur considère tout diff non vide comme un bug à signaler.

vivace n'exécute aucun script PHP lors de l'installation ou de la mise à jour. Trois plugins Composer courants, symfony/runtime, composer/installers et drupal/core-composer-scaffold, sont émulés et vérifiés contre le comportement réel des plugins ; pour tout autre plugin, vivace bascule vers l'exécution du vrai binaire composer. L'outil ne prend pas encore en charge les commandes require et remove, les mises à jour partielles comme composer update vendor/name, les dépôts VCS ou path, les explications de Composer sur les ensembles insolubles, ni Windows. Le projet est hébergé sur github.com/Adelagric/vivace, avec les notes de version dans CHANGELOG.md et la liste des scénarios non testés dans HANDOVER.md.