vivace ist eine Neuimplementierung von Composers Abhängigkeitsverwaltung in Rust. Version 0.4.0 fügt composer update hinzu und ergänzt damit die bereits vorhandene Unterstützung für composer install aus früheren Releases. Ziel ist eine byte-genaue Übereinstimmung: Bei gleichem composer.json und composer.lock erzeugt vivace dasselbe vendor/-Verzeichnis und dieselbe Lock-Datei wie 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.shUm diese Übereinstimmung für update zu erreichen, portierte der Autor Composers tatsächlichen Resolver, statt einen eigenen Algorithmus zu entwickeln. Übernommen wurden der Pool-Builder, der Pool-Optimizer, das Rule-Set, der CDCL-Solver, die Versionspolitik und der Lock-Writer. Ein anderer Auflösungsalgorithmus würde bei mehrdeutigen Abhängigkeitsgraphen andere Paketversionen wählen und eine Lock-Datei erzeugen, die sich nicht mit Composers eigenem Ergebnis vergleichen lässt.
Die Validierung läuft gegen eingefrorene Packagist-Snapshots. Getestet wird zunächst der Kandidatenpool, dann die komplette Entscheidungsfolge des Solvers, direkt aus Composers internem Solver-Objekt ausgelesen, danach die resultierenden Operationen und schließlich die Lock-Datei. Zu den Testprojekten zählen Laravel, die Symfony-Demo-Anwendung, Sylius, rector-src und ein Drupal-recommended-project, dazu kleinere künstliche Fälle für Backtracking, eine unlösbare Abhängigkeitsmenge, Root-Aliase und virtuelle Pakete.
Die Behauptung lässt sich lokal nachprüfen. Nach dem Klonen des Repositories folgen cargo build --release, fixtures/make.sh zum Laden der Testprojekte sowie harness/update.sh und harness/diff-vendor.sh, die vivace mit echten Composer-Läufen vergleichen. Im eigenen Projekt funktioniert es ebenso mit vivace update --no-install neben composer update --no-install und einem Diff der beiden Lock-Dateien. Jeder nicht-leere Diff gilt dem Autor zufolge als Fehlerbericht.
vivace führt beim Installieren oder Aktualisieren keine PHP-Skripte aus. Drei verbreitete Composer-Plugins, symfony/runtime, composer/installers und drupal/core-composer-scaffold, werden emuliert und gegen das echte Plugin-Verhalten geprüft; bei jedem anderen Plugin fällt vivace auf den echten composer-Befehl zurück. Noch nicht unterstützt werden require- und remove-Befehle, partielle Updates wie composer update vendor/name, VCS- oder Path-Repositories, Composers Erklärungen zu unlösbaren Abhängigkeitsmengen sowie Windows. Das Projekt liegt auf github.com/Adelagric/vivace, Release-Notes stehen in CHANGELOG.md, ungetestete Szenarien sind in HANDOVER.md aufgeführt.




Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.