O método
QueryUtilities.prototype.clauseWhereOfChar
passa a suportar arrays de valores. Até a versão 62, múltiplos valores somente podiam ser
informados por meio de uma string contendo uma lista de valores separados por “;”.
Foram publicados os métodos Math.log2 e Math.log10 no runtime JavaScript padrão Ije.
O método XMLHttpRequest.prototype.send passa a suportar valores do tipo Uint8Array.
Foi criado o método
Connection.prototype.getTimezoneOffset
com o objetivo de obter a diferença em minutos do fuso horário do servidor acessado pela conexão e
o UTC.
Web Framework
O campo “Peso” da grade “Colunas selecionadas” do Gerador de Relatórios
(acessado via “Perfil do usuário > Meus relatórios”) passa a ser apresentado apenas em modo
formulário, e seu texto de ajuda agora é mais claro, sinalizando que o campo deve ser preenchido
com o nome de uma coluna de pesos para cálculo da média aritmética ponderada.
O campo também deixa de ter como preenchimento um texto livre e passa a apresentar as colunas de
valores numéricos disponíveis na fonte de dados que está sendo utilizada.
Foi criada a propriedade ViewDefField.prototype.enterKeyAction
que permite ao desenvolvedor especificar o comportamento do campo quando for digitada a tecla ENTER.
Defeitos corrigidos
Engine
Índices com expressões lookups poderiam perder a integridade após a criação ou remoção de
uma classe de dados. Essa falha eventualmente se manifestava com o erro “Error updating index”
durante o sincronismo do cache local, impedindo o uso do sistema.
A pesquisa em índices com expressões lookups poderia falhar em DataSets temporários caso
os registros das tabelas associadas à expressão lookup fossem modificados.
A classe XMLHttpRequest sempre adicionava o parâmetro “charset” no cabeçalho “content-type”
quando o conteúdo enviado era um texto. Esse comportamento poderia gerar um cabeçalho incorreto
para os tipos de mídia textuais que não esperam esse parâmetro, como o “multipart/form-data”.
A partir desta versão, o sistema passa a adicionar esse parâmetro automaticamente apenas para
os tipos de mídia “text/*”, “application/xml” e “*/*+xml”. Para os demais tipos, o “charset”
precisa ser explicitamente definido pelo desenvolvedor no cabeçalho via setRequestHeader.
O método XMLHttpRequest.prototype.setRequestHeader gerava uma requisição HTTP inválida
caso o valor do cabeçalho informado contivesse um salto de linha. Saltos de linha e espaços,
no início e no fim do valor do cabeçalho, passam a ser removidos, conforme especificação da
API XMLHttpRequest.
Na integração com Java, não era possível a partir de uma classe Java invocar a execução de um
script do Engine se a chave do script fosse de 64 bits.
A classe DBTracker,
utilizada para rastrear as alterações dos testes de integração, poderia falhar caso houvesse mais
de uma execução de testes ao mesmo tempo.
O valor informado no parâmetro recursive do método
File.deleteDirectory
era ignorado e o método sempre removia o diretório, mesmo que houvesse conteúdo nele. Esse método
agora passa a se comportar conforme a sua documentação e, caso o parâmetro recursive não seja
informado ou seja falso, o diretório somente será removido se estiver vazio.
Extensão VS Code
Os botões “Go to File” e “Rerun on Engine” da aba de resultados da execução de código
apresentavam funcionamento incorreto. O primeiro botão deveria abrir o arquivo originalmente
executado e o segundo deveria reexecutar esse arquivo (ou uma determinada seleção dele). Em
certas ocasiões, esses botões estavam utilizando outro arquivo de código fonte de uma execução
paralela, e não o arquivo correto.
Web Framework
O campo “Derivação” da grade “Colunas selecionadas” do Gerador de Relatórios
(acessado via “Perfil do usuário > Meus relatórios”) reapresentava as exatas mesmas opções
caso a opção de derivação selecionada fosse a mesma que foi digitada no campo no momento da busca.
A navegação entre os campos de um FormDialog
não ocorria da mesma forma que a navegação entre os campos da grade. Agora o formulário também passa
a permitir a navegação com a tecla ENTER em todos os tipos de campos e o uso da tecla F2 para
iniciar a edição do campo desejado.
Outras alterações
Engine
A assinatura dos métodos Crypto.encryptBytes e Crypto.decryptBytes foi alterada e os
parâmetros cipher e iv passam a ser obrigatórios. Esses métodos também passam a rejeitar
chaves e vetores de inicialização com tamanho diferente do esperado pelo algoritmo de
criptografia.
O método Dataset.prototype.sum passa a evitar arredondar valores numéricos utilizados
para agrupamento caso eles sejam inteiros. Essa alteração tenta evitar a introdução
de erros de precisão de ponto flutuante em eventuais chaves que erroneamente estejam gravadas
em campos do tipo number. É importante ressaltar que chaves sempre devem ser armazenadas em
campos e colunas do tipo int64 no DataSet e BIGINT na base de dados, evitando a imprecisão
inerente da aritmética de ponto flutuante do tipo number.
O valor padrão da propriedade
Scheduler.prototype.maxSimultaneousTasks
foi alterado de 2 para 4. A alteração dessa propriedade também passa a gerar um erro
caso o valor informado seja inferior a 1.