Os comportamentos específicos do runtime JavaScript do Engine passam a ser documentados em
https://nginstack.com/pt/docs/engine/javascript/.
A leitura dessa documentação é recomendada para todos os desenvolvedores da plataforma, pois ela
trata de assuntos que até então não haviam sido adequadamente divulgados, entre eles, o uso e
a compatibilidade com o runtimeV8.
Foi implementado o construtor do objeto ArrayBuffer.
For implementado no objeto XMLHttpRequest
as propriedades response e responseType, que possibilitam a leitura do corpo do retorno de uma
requisição como um ArrayBuffer ou como um objeto JSON, além do tipo string. Também agora é
possível informar o corpo de uma requisição, no método send, usando o tipo ArrayBuffer,
além do tipo string já suportado. For implementado a flag decodeContentFromLatin1, informada
no construtor do objeto, que possibilita controlar o comportamento do Engine na decodificação
do conteúdo do retorno de uma requisição. O valor padrão é true, mantendo o comportamento atual
mas no futuro else será alterado para false, sendo recomendado rever os scripts que
dependam dessa característica.
Foi implementado no método write objeto Socket
o envio de objetos do tipo ArrayBuffer.
Ao utilizar o método QueryAnalyzer.getTxtExecutionPlan() ocorria o erro
“ResponseObject is not defined”.
O processo “Administração do sistema > Classes de dados > Explorador de classes” verificava
apenas a permissão de visão do usuário para a classe “/Dados/Sistema/Classes” e exibia todas
as classes se houvesse permissão. Agora o processo passa a também verificar a permissão
de visão aos dados das classes, permitindo que esse processo possa ser utilizado por
usuários que não sejam administradores do sistema.
Desenvolvimento
Ao executar o processo “Desenvolvimento > Base de dados > Atualização de estrutura” ocorria o
erro “Incorrect syntax near the keyword NOT” caso fosse utilizado o banco de dados
Microsoft SQL Server e existisse um campo “CLASSE” ou “iClass” sem a restrição “NOT NULL”
configurada.
Engine
Em arquiteturas 64 bits, a heurística que define o tamanho padrão do cache do IDO sempre
resultava em um cache de 256 MB em vez de ser uma fração da quantidade total de memória RAM
instalada no servidor.
O tempo de timeout dos métodos read e readln da classe Socket poderiam não ser respeitados
caso ocorresse uma virada do dia.
REST Framework
Ao executar a função persistDataSets
informando DataSets da tabela iVfs ocorria o erro “Não é permitido persistir um DataSet que não
possua o campo iClass ou CLASSE”.
Web Framework
Links de relatórios com rótulos longos não eram exibidos corretamente quando havia mais de um
link configurado em uma mesma coluna.
Script de inicialização do Web Framework usava APIs que não eram importadas explicitamente,
dificultando o seu uso em testes unitários.
Ao mudar a visão para o modo tabela ocorria o destaque de dois registros posicionados caso o
campo em edição no modo formulário não fosse visível no modo tabela.
O link para o manual “Teclas de atalho do Web Framework” não funcionava na ajuda do Web Framework.
Ao chamar o método Grid.prototype.expand
a grade poderia ser reposicionada para o último registro selecionado.
Ao informar o valor de um campo do tipo combo ocorria um erro quando ele era configurado para
aceitar múltiplos valores, via propriedade
multiple, e a
pesquisa do valor informado retornava uma única ocorrência.
Ao navegar em uma grade mestre não ocorria a emissão do evento afterScroll da grade detalhe.
Outras alterações
Engine
A biblioteca OpenSSL utilizada pelo Engine foi atualizada da versão 1.0.2o para a versão 1.0.2q.
Para maiores detalhes sobre as alterações, consultar no site oficial as novidades dessa versão.
Web Framework
A tela de login e o ambiente padrão do sistema passam a utilizar as seguintes propriedades de
vendor em vez do nome fixo nginstack: