Composer 2.11.0-RC1 se publicó el 22 de octubre como versión preliminar. El tag está firmado por Seldaek, Jordi Boggiano, y apunta al commit 31eb692. El equipo pide probarlo y comunicar cualquier regresión con trazas de pila y casos reproducibles. Los cambios abarcan la evolución desde Composer 2.10.3 hasta 2.11.0-RC1.
composer self-update --preview
composer self-update --stableLa opción de configuración source-fallback, incorporada temporalmente en la versión 2.10, ha sido eliminada. Las instalaciones dist ya no cambian automáticamente a source. composer-plugin-api pasa a la versión 2.11.0.
Composer rechaza las conexiones TLS que presentan certificados intermedios que han dejado de ser confiables. Esto incluye los certificados eMudhra comprometidos, incluso cuando el almacén de CAs del sistema todavía confía en sus certificados raíz. Los bin proxies escapan correctamente las rutas y los shebangs controlados por los paquetes. Se rechazan las rutas bin que contienen metacaracteres de shell. secure-http detecta ahora URL inseguras mal formadas y la sintaxis de transporte de Git. Las cabeceras HTTP personalizadas de un repositorio ya no se envían a URL dist de otros hosts cuyo nombre solo comienza con el del repositorio.
Composer puede retener durante un periodo configurable las versiones de paquetes recién publicadas. La medida reduce la exposición a releases comprometidos. Las políticas personalizadas incorporan block-scope y pueden bloquear también durante la instalación. El progreso y el estado del terminal admiten las secuencias de escape OSC 7501 y OSC 9. COMPOSER_TERMINAL_STATUS permite configurar esta salida.
El comando audit añade --direct, disponible también como -D, para revisar únicamente las dependencias directas. Composer admite el nuevo host SSH ssh.bitbucket.org de Bitbucket Cloud y lo usa para el fallback SSH. La opción de configuración strict-psr-autoloader equivale al indicador --strict-psr-autoloader. Un dump optimizado del autoloader avisa cuando las rutas solo se diferencian por mayúsculas y minúsculas.
only-branches permite limitar las ramas cargadas desde repositorios VCS. show --tree --format=json incluye ahora las versiones instaladas de las subdependencias. Las consultas a la API de avisos de seguridad se agrupan en proyectos con grafos de dependencias muy grandes. Composer espera y reintenta ante respuestas HTTP 429 y cabeceras Retry-After. El User-Agent identifica ahora a los agentes de programación con IA. Al crear una biblioteca con init, Composer pregunta si composer.lock debe recibir export-ignore en .gitattributes.
La resolución de dependencias mejora en tiempo y consumo de memoria. Composer deja de solicitar HTTP/3, lo que evita una demora con versiones recientes de curl. outdated y show --latest cargan los metadatos de paquetes en paralelo. Los errores de conflicto explican mejor cuándo los avisos de seguridad bloquean determinadas versiones.
Se corrige la detección de un lock file desactualizado después de modificar la configuración de políticas. La instalación se detiene correctamente si composer.lock contiene un conflicto de fusión en content-hash. Las descargas ZIP truncadas se reintentan y nunca se guardan en caché. Los archivos generados, como el autoloader y composer.json, se reemplazan de forma atómica. Así se evitan problemas con enlaces físicos y lectores concurrentes.
Las URL SSH conservan su usuario en los comandos de Git, lo que corrige fallos de autenticación introducidos en 2.10.3. Se corrige la autenticación mediante tokens de trabajo de GitLab CI. Las cabeceras personalizadas de auth.json del proyecto y de COMPOSER_AUTH se combinan con las globales en lugar de sustituirlas. Las solicitudes paralelas reintentan con las credenciales obtenidas por otra solicitud, en vez de informar inmediatamente de credenciales inválidas.
Composer informa ahora del límite de la API de GitHub cuando falla el fallback de clonación. outdated deja de marcar como desactualizados los paquetes sin una versión instalable. update --minimal-changes gestiona correctamente los nombres de paquetes con comodines. bump conserva las restricciones del estilo >=10 y ya no relaja las restricciones OR. Los avisos de seguridad no se aplican incorrectamente a ramas de desarrollo con nombre, como dev-main.
El directorio vendor queda excluido del escaneo de la classmap raíz en los casos en que antes se incluía. self-update ya no falla con un error de clase inexistente al sustituir el PHAR. clear-cache --no-cache informa de que la caché está desactivada en lugar de señalar directorios ausentes. Los comandos de script vacíos se tratan como operaciones sin efecto.
suggests devuelve ahora un error cuando el filtro apunta a un paquete no instalado o excluido por --no-dev. JsonManipulator::addSubNode() ya no modifica una clave anidada con el mismo nombre. Las advertencias de los repositorios no se repiten. Las clases de capacidades de plugins solo se instancian después de comprobar sus interfaces. Composer deja de advertir al buscar paquetes inline sin UID.




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.