The Daily Commit · Ressort-Ausgabe Titelseite PHP AI Dev EN DE FR ES

The Php Times

Tooling — Ökosystem

Rust-Tool vivace 0.4.0 bildet Composers Update-Resolver byte-genau nach


vivace 0.4.0 ergänzt eine Rust-Portierung von composer update und bildet dabei Composers Resolver-Logik aus Version 2.10.3 nach, einschließlich Pool-Builder, CDCL-Solver und Lock-Writer.

R/PHP (TOP), 12. September 2026 kuratiert von Sönke

Dadurch entstehen identische composer.lock- und vendor/-Ausgaben bei Testprojekten wie Laravel, der Symfony-Demo und Sylius. PHP-Skripte führt das Tool nicht aus, partielle Updates und Windows werden noch nicht unterstützt.

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.

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

Um 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.

Originalquelle lesen (Englisch) ↗

Artikel bewerten: 0

Leserforum

Noch keine Beiträge — eröffne die Debatte.

← Ökosystem — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Bildschirm-Ausgabe · Impressum · Datenschutz