Escrito por

Sales Engineer at InterSystems
InterSystems Oficial Danusa Calixto · 1 hr atrás

Notas de Lançamento da versão 0.10.5 do IPM

A versão 0.10.5 do IPM foi lançada em 15 de janeiro de 2026. Esta nova versão contém diversas melhorias e correções de bugs, então não deixe de conferir diretamente na página do GitHub ou no Registro da Comunidade!

As principais mudanças incluem:

  • Uma reescrita da resolução de dependências que melhora drasticamente o desempenho, incluindo um aumento de velocidade de 200 vezes em casos muito complexos.
  • Um registro de histórico que rastreia as instalações, carregamentos, atualizações e desinstalações do IPM, que pode ser visualizado usando o comando zpm "log".
  • Expressões de sistema, como ${namespace}, e macros `$$$` agora são avaliadas em arquivos de mesclagem CPF, permitindo maior flexibilidade na configuração inicial.
  • O método <Invoke> no arquivo `module.xml` agora se comporta de forma mais intuitiva, verificando sempre o valor de retorno %Status somente se a assinatura do método declarar que `%Status` é retornado. Isso significa que um erro será lançado se nada for retornado, se o valor de retorno não for `%Status` ou se não for $$$OK.

Segue a lista completa de alterações:

Adicionado

  • #938: Adicionada a flag -export-python-deps ao comando package
  • #462: O comando repo para configuração de repositório agora suporta o modo de entrada secreta de senhas com a flag -password-stdin
  • #935: Adicionado um processador de recursos genérico para JFrog Artifactory em formato tarball para empacotar artefatos com um pacote e implantá-los em um local final durante a instalação.
  • #950: Adicionado suporte para listar pacotes Python instalados usando list -pythonlist -py e list-installed -python
  • #822: O processador de recursos CPF agora suporta expressões e macros do sistema em arquivos de mesclagem CPF
  • #578: Adicionada funcionalidade para registrar e exibir o histórico do IPM de instalação, desinstalação, carregamento e atualização
  • #961: Adicionada a criação de um arquivo de bloqueio para um módulo usando a flag -create-lockfile durante a instalação.
  • #959: Nos repositórios ORAS, o nome externo agora pode ser usado de forma intercambiável com o nome (padrão) para instalação e atualização, ou seja, um módulo publicado com seu nome (padrão) pode ser instalado usando seu nome externo.
  • #951: O comando unpublishignorará a solicitação de confirmação do usuário se a flag -force for fornecida.
  • #1018: Exigir o nome do módulo para desinstalação quando a flag -all não for usada.

Alterado

  • #316: Todos os parâmetros, exceto o modo de desenvolvedor, incluídos em um comando de loadinstall ou update serão propagados para as dependências.
  • #885: Sempre carregar as dependências de forma síncrona e permitir que cada módulo execute multithreading conforme necessário para carregar usando multicompile, em vez de tentar executar seu próprio multithreading para o carregamento de itens, o que causa contenção de bloqueio ao ignorar o compilador IRIS.
  • #481: Melhorar o desempenho do BuildDependencyGraph fazendo o seguinte: 
    • Eliminar a recursão e usar iteração.
    • Remover a busca em profundidade e realizar uma busca em largura pura.
    • Obter um cache melhor dos resultados para buscas de módulos, consolidando expressões de busca (reduzindo expressões que são interseções).

Removido

  • #938: Remoção do tratamento da flag secreta NewVersion em %Publish()

Corrigido

  • #943: O comando load, quando usado com uma URL de repositório do GitHub, aceita novamente um argumento branch.
  • #701: Corrigidos comentários de ajuda enganosos sobre o comando search.
  • #958: O comando updatenão deve falhar prematuramente se um nome externo for usado.
  • #970: Correção: Resolvido erro no processamento do WebApp com o comando generate.
  • #965: O comando fileCopy em um diretório com um nome sem a barra inicial agora funciona.
  • #937: Publicar um módulo com um <WebApplication> contendo um Pathnão gera mais erros.
  • #957: Mensagens de erro aprimoradas para a execução de comandos do sistema operacional. Agora, quando um comando falha, a mensagem de erro inclui o comando completo e seu código de retorno. Também foi corrigida a separação de argumentos para o comando attrib do Windows e removido o tratamento de erros enganoso para comandos ausentes.
  • #789: Corrigido erro ao listar módulos para um repositório ORAS com um namespace especificado.
  • #999, #1000: A instalação do IPM limpa mapeamentos obsoletos usados ​​em versões antigas do IPM.
  • #1007: A expressão ${ipmDir}agora funciona no argumento <Arg> de um <Invoke>.
  • #1015: Corrigidos bugs de resolução de dependências onde * como requisito de versão e intervalos sobrepostos não funcionavam corretamente.
  • #1036: O comando update não propaga mais o modo de desenvolvedor para as dependências.

Obsoleto

  • #828: The CheckStatus flag for <Invoke> action has been deprecated. Default behavior is now to always check the status of the method if and only if the method signature returns %Library.Status
  • #885: -synchronous flag since loading dependencies synchronously is now the default behavior.
  • #828: A flag CheckStatus para a ação <Invoke> foi descontinuada. O comportamento padrão agora é sempre verificar o status do método somente se a assinatura do método retornar %Library.Status.
  • #885: Flag -synchronous, já que o carregamento síncrono de dependências agora é o comportamento padrão.

Segurança

  • O pacote urllib3 foi atualizado para a versão 2.6.3.

Se você tiver alguma dúvida, sugestão ou bug que queira relatar, fique à vontade para fazê-lo aqui ou na página do GitHub. (No GitHub, perguntas e sugestões devem ser enviadas para a página de discussões e bugs para a página de problemas.)