Versão 58

Melhorias

Engine

  • A leitura das variáveis de ambiente via engine.env passa a ser feita de forma case-insensitive.
  • O método QueryUtilities.prototype.clauseWhereOfKeys foi otimizado para tratar listas contendo milhares de chaves. É importante observar que o uso desse método com uma quantidade muito elevada de chaves gera consultas não otimizadas e os SGBDs podem rejeitar a cláusula gerada devido a restrições ou limitações próprias, sendo recomendado nesse caso o filtro por uma subquery em vez do uso deste método.
  • O Engine passa a ser compilado com as proteções ASLR e NX ativas por padrão.
  • O método DataSet.prototype.sum passa a arredondar os valores dos campos do tipo number caso eles sejam utilizados para agrupamento. O objetivo dessa melhoria é tentar reduzir a quantidade de grupos distintos gerados pela imprecisão intrínseca da representação numérica em ponto flutuante. Apesar desta melhoria, não é recomendado que campos do tipo number sejam utilizados para identificar os grupos de registros a serem totalizados.

Web Framework

  • Os logs de execução das interações dos processos gravados no arquivo “main.log” passam a indicar o usuário que executou o processo e o identificador da sessão.

Extensão VS Code

  • O histórico de alterações da Virtual File System passa a contar com links para exibir mais resultados ao final da lista de alterações de cada arquivo. Esses links estendem a busca para o respectivo arquivo, exibindo resultados mais antigos.
  • O histórico de alterações da Virtual File System passa a contar com filtro de busca por conteúdo do arquivo. Mais informações em https://nginstack.com/pt/docs/vscode/vfs-history/#filtros-extras

Web Framework

  • A versão do sistema passa a ser exibida no rodapé dos relatórios gerados pela classe SimpleLayout, permitindo ao usuário identificar a versão do sistema que gerou um relatório impresso ou enviado por e-mail.

Defeitos corrigidos

Admin

  • O processo “Admin > Auditoria > Desfazer ou refazer as alterações” poderia gerar o erro “Usuário ou senha inválidos na conexão com a origem”, mesmo quando não era utilizada a opção “Informar base de origem”.
  • O processo “Admin > Auditoria > Desfazer ou refazer as alterações” falhava caso fossem informados os filtros “Tabela”, “Nome da tabela” ou “Chave do usuário”.
  • O relatório “Admin > Auditoria > Consultar alterações” apresentava erro se houvesse no histórico de alterações uma classe removida.

Engine

  • A edição de um registro em um DataSet com delta compartilhado, criado com a opção sharedDelta habilitada no momento do clone, poderia ser ignorada durante a execução do applyUpdates.
  • Os listeners de eventos registrados com a API legada LegacyEvent.prototype.set poderiam ser executados em duplicidade caso também fossem registrados listeners com a API atual de eventos Emitter.prototype.on.
  • O método Math.ceil() não suportava valores superiores ou inferiores aos limites de um inteiro de 32 bits.
  • O Windows 11 era identificado incorretamente como Windows 10 nos logs do Engine.

Desenvolvimento

  • A pré-visualização de relatório exibida no processo “Desenvolvimento > Relatórios > Editor (experimental)” não carregava corretamente o estilo visual e apresentava dados textuais sem formatação.

Extensão VS Code

  • O histórico de alterações da Virtual File System retornava resultados de todos os arquivos quando o filtro fosse preenchido com um caminho ou padrão que não correspondesse a um arquivo. Nesses casos, a interface passa a informar que não foram encontrados resultados.

Web Framework

  • Ao mudar a visão de uma grade vazia que contivesse um campo do tipo grade de uma classe filha de “Relações entre cadastros e arquivos” era exibido o alerta “Ocorreu um erro ao tentar calcular o valor do campo Imagem”.
  • Ao exportar os registros de uma grade no formato de relatório, os campos inteiros eram exibidos indevidamente com separador decimal.
  • Em algumas ocasiões, ao inserir novo registro em grades cuja quantidade de registros era maior que o número máximo de registros exibidos, era exibida a seguinte mensagem: “Ocorreu um erro ao executar os comandos de sincronismo recebidos do servidor”.
  • Ao criar uma grade de configuração utilizando a função newSettingsGrid, era exibido o erro “O tipo de campo informado é inválido” para alguns tipos de configurações.