IPM versión 0.10.5 se ha lanzado el 15 de enero de 2026. Esta nueva versión incluye un montón de mejoras y correcciones de errores, así que aseguraos de echarle un vistazo, ya sea directamente desde la página de GitHub o desde el Registro de la Comunidad.
Los cambios más importantes incluyen lo siguiente:
- Una reescritura de la resolución de dependencias que mejora drásticamente el rendimiento, incluyendo un aumento de velocidad de 200 veces en casos muy complicados.
- Un registro de historial que realiza el seguimiento de las instalaciones, cargas, actualizaciones y desinstalaciones de IPM, que podéis consultar usando zpm "log"
- Las expresiones del sistema, como ${namespace}, y las macros $$$ ahora se evalúan en los archivos de combinación CPF, lo que permite una mayor flexibilidad en la configuración inicial.
<Invoke>en module.xml se comporta de forma más intuitiva al comprobar siempre el valor de retorno %Status si y solo si la firma del método declara que se devuelve %Status. Esto significa que se lanzará un error si no se devuelve nada, si el valor devuelto no es un %Status o si no es $$$OK.
Aquí tenéis la lista completa de cambios:
Añadidos
- #938: Añadida la opción -export-python-deps al comando package
- #462: El comando
repopara la configuración de repositorios ahora admite el modo de entrada secreta por terminal para contraseñas con la opción-password-stdin- #935: Se añade un procesador genérico de recursos tarball de JFrog Artifactory para empaquetar artefactos con un paquete y desplegarlos en una ubicación final durante la instalación
- #950: Añadido soporte para listar paquetes de Python instalados usando
list -python,list -pyandlist-installed -python- #822: El procesador de recursos CPF ahora admite expresiones del sistema y macros en archivos de combinación CPF
- #578: Añadida funcionalidad para registrar y mostrar el historial de IPM de instalación, desinstalación, carga y actualización
- #961: Se añade la creación de un archivo de bloqueo para un módulo usando la opción
-create-lockfiledurante la instalación- #959: En repositorios ORAS, el nombre externo ahora puede usarse indistintamente con el nombre (predeterminado) para
installyupdate; es decir, un módulo publicado con su nombre (predeterminado) puede instalarse usando su nombre externo- #951: El comando
unpublishomitirá la solicitud de confirmación al usuario si se proporciona la opción-force- #1018: Se requiere el nombre del módulo para desinstalar cuando no se utiliza la opción -all
Cambiados
- #316: Todos los parámetros, excepto el modo desarrollador, incluidos en un comando
load,installoupdatese propagarán a las dependencias- #885: Cargar siempre las dependencias de forma síncrona y permitir que cada módulo gestione el multihilo según sea necesario para la carga usando multicompile, en lugar de intentar gestionar el multihilo propio de la carga de elementos, lo que provoca contención de bloqueos al evitar el compilador de IRIS
- #481: Mejora del rendimiento de BuildDependencyGraph realizando lo siguiente:
- Eliminar la recursión y usar iteración.
- Eliminar la búsqueda en profundidad y usar únicamente búsqueda en anchura.
- Mejorar el almacenamiento en caché de los resultados de búsqueda de módulos colapsando las expresiones de búsqueda (reduciendo expresiones que son intersecciones).
Eliminados
- #938: Eliminada la gestión de la opción secreta NewVersion en %Publish()
Corregidos
- #943: El comando
load, cuando se usa con una URL de repositorio de GitHub, vuelve a aceptar un argumentobranch- #701: Corregidos comentarios de ayuda engañosos sobre el comando
search- #958: El comando update ya no falla de forma prematura si se utiliza el nombre externo
- #970: Corregido error en el procesamiento del comando 'generate' de WebApp
- #965: FileCopy en un directorio con un Name sin la barra inicial ahora funciona
- #937: Publicar un módulo con un
<WebApplication>que contiene unPathya no provoca errores- #957: Mejorados los mensajes de error para la ejecución de comandos del SO. Ahora, cuando un comando falla, el mensaje de error incluye el comando completo y su código de retorno. También se corrigió la separación de argumentos para el comando
attribde Windows y se eliminó el manejo de errores engañoso para comandos ausentes- #789: Corregido error al listar módulos para un repositorio ORAS con un namespace especificado
- #999, #1000: La instalación de IPM ahora limpia las asignaciones obsoletas usadas en versiones anteriores de IPM
- #1007: La expresión
${ipmDir}ahora funciona en el<Arg>de un<Invoke>- #1015: Corregidos errores en la resolución de dependencias donde
*como requisito de versión y rangos que se intersectan no funcionaban correctamente- #1036: El comando
updateya no propaga el modo desarrollador a las dependenciasObsoletos
- #828: La opción
CheckStatuspara la acción<Invoke>ha quedado obsoleta. El comportamiento predeterminado ahora es comprobar siempre el estado del método si y solo si la firma del método devuelve %Library.Status- #885: La opción
-synchronousha quedado obsoleta, ya que cargar las dependencias de forma síncrona ahora es el comportamiento predeterminadoSeguridad
- Se ha actualizado el paquete urllib3 wheel a la versión 2.6.3
Si tenéis alguna pregunta, sugerencia o error que queráis reportar, no dudéis en comentarlo aquí o en la página de GitHub. (En GitHub, las preguntas y sugerencias deben ir a la página de discusiones, y los errores a la página de issues.)

.png)
.png)
.png)