The Daily Commit · Edición de sección Portada PHP AI Dev EN DE FR ES

The Php Times

Herramientas — Ecosistema

vivace: composer install reescrito en Rust, 5-16 veces más rápido y con vendor idéntico al byte


vivace es una reimplementación en Rust de composer install que genera un directorio vendor idéntico byte a byte al de Composer 2.10.

R/PHP (TOP), 10 de septiembre de 2026 seleccionado por Sönke

Es de 5 a 16 veces más rápido según los benchmarks. Requiere un composer.lock existente y delega en el Composer real cuando encuentra funciones no soportadas.

vivace reimplementa composer install en Rust. No resuelve dependencias; se necesita un composer.lock existente. El autor primero perfiló Composer: en una instalación en caliente el tiempo se va en crear decenas de miles de archivos pequeños y en escanear el classmap, no en ejecutar PHP.

terminal
curl -fsSL https://raw.githubusercontent.com/Adelagric/vivace/main/install.sh | sh
# or
cargo binstall vivace

vivace extrae cada paquete una sola vez en un almacén direccionado por contenido y lo clona en vendor/, usando clonefile de APFS en macOS y enlaces duros en Linux. Los classmaps se cachean por entrada del almacén, mientras que Composer reextrae y reescanea en cada ejecución.

El objetivo declarado es una salida idéntica byte a byte a la de Composer 2.10, incluidos los proxies de vendor/bin, installed.json, installed.php, autoload_static.php y platform_check.php. Un arnés de pruebas diferencial ejecuta composer install y vivace install sobre los mismos proyectos (Laravel, la demo de Symfony, Sylius, con 109, 153 y 276 paquetes) y compara los árboles vendor. Reporta cero diferencias en los modos normal, -o, -a y --no-dev, en macOS y Linux, en CI en cada push. La detección de clases se validó contra el propio PhpFileParser de Composer con unos 50.000 archivos PHP reales.

Medianas de hyperfine frente a Composer 2.10.3 en un M4 Max: instalación sin cambios 54/23/31 ms frente a 1049/577/592 ms; instalación en caliente 196/182/609 ms frente a 2,7/2,4/6,0 s; dump-autoload -o 46/60/151 ms frente a 1,6/0,9/1,6 s. En los runners ubuntu-latest de GitHub: 12-16x sin cambios, 5-9x en caliente, 10-13x en dump-autoload -o.

Límites deliberados: sin scripts ni plugins. vivace nunca ejecuta PHP. symfony/runtime se emula de forma nativa, y una breve lista de plugins inocuos en la instalación como flex y discovery se instalan como bibliotecas normales. No hay resolvedor ni soporte para Windows. Si un lock contiene funciones no soportadas como composer/installers, composer-patches, installer-paths, plugins desconocidos o paquetes solo-fuente, vivace lo detecta antes de tocar vendor/ y cede el control al composer install real.

La instalación se hace con un script verificado por checksum para Linux x86_64/arm64 y macOS arm64/x86_64, o con cargo binstall vivace. El código fuente y la metodología de los benchmarks están en GitHub en Adelagric/vivace.

Leer la fuente original (en inglés) ↗

Valora este artículo: 0

Tribuna de lectores

Aún no hay aportaciones — abre el debate.

← Ecosistema — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Edición de pantalla · Información legal · Política de privacidad