Lançamento da plataforma JavaScript do lado do servidor Node.js 14.0
aconteceu liberar Node.js 14.0,plataformas para execução de aplicativos de rede em JavaScript. O Node.js 14.0 é um branch de suporte de longo prazo, mas esse status só será atribuído em outubro, após a estabilização. Node.js 14.0 será compatível ser realizado até abril de 2023. A manutenção da ramificação LTS anterior do Node.js 12.0 durará até abril de 2022, e do penúltimo ramo LTS 10.0 até abril de 2021. O suporte para o branch de teste 13.x terminará em junho deste ano.
A capacidade de gerar em tempo real ou na ocorrência de certos eventos foi estabilizada relatórios de diagnóstico, que exibem eventos que ajudam a diagnosticar problemas como travamentos, degradação de desempenho, vazamentos de memória, carga pesada de CPU, saída de erro inesperada, etc.
Adicionado suporte experimental à API Armazenamento local assíncrono com a implementação da classe AsyncLocalStorage, que pode ser usada para criar estados assíncronos com manipuladores baseados em chamadas de retorno de chamada e promessas. AsyncLocalStorage permite armazenar dados enquanto uma solicitação da web está sendo processada, uma reminiscência do armazenamento local de thread em outros idiomas.
Removida mensagem de aviso sobre recurso experimental ao carregar módulosECMAScript 6 conectado e exportado usando instruções de importação e exportação. Ao mesmo tempo, a implementação dos módulos ESM em si permanece experimental.
Motor V8 atualizado para versão 8.1 (1, 2, 3), que inclui novas otimizações de desempenho e recursos como o novo operador de concatenação lógica "??" (retorna o operando direito se o operando esquerdo for NULL ou indefinido e vice-versa), o operador "?." para uma verificação única de toda a cadeia de propriedades ou chamadas (por exemplo, “db?.user?.name?.length” sem verificações preliminares), o método Intl.DisplayName para obter nomes localizados, etc.
Foi realizada uma revisão da API Streams, visando melhorar a consistência das APIs Streams e eliminar diferenças no comportamento das partes básicas do Node.js. Por exemplo, o comportamento de http.OutgoingMessage é próximo de stream.Writable e net.Socket é semelhante a stream.Duplex. A opção autoDestroy é definida como “true” por padrão, o que significa chamar “_destroy” após a conclusão.
Adicionado suporte experimental à API WASI (Interface do sistema WebAssembly), fornecendo interfaces de software para interação direta com o sistema operacional (API POSIX para trabalhar com arquivos, soquetes, etc.).
Lembre-se de que a plataforma Node.js pode ser usada tanto para suporte de aplicativos da Web no lado do servidor quanto para a criação de programas comuns de rede de clientes e servidores. Para expandir a funcionalidade dos aplicativos para Node.js, um grande número de coleção de módulos, onde você encontra módulos com implementação de servidores e clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integração com diversos frameworks web, manipuladores WebSocket e Ajax, conectores para SGBD (MySQL, PostgreSQL, SQLite , MongoDB ), motores de modelo, motores CSS, implementações de algoritmos criptográficos e sistemas de autorização (OAuth), analisadores XML.
Para lidar com um grande número de solicitações paralelas, o Node.js usa um modelo de execução de código assíncrono baseado no processamento de eventos sem bloqueio e na definição de manipuladores de retorno de chamada. Os métodos suportados para conexões de multiplexação incluem epoll, kqueue, /dev/poll e select. A biblioteca é usada para multiplexar conexões libuv, que é uma superestrutura sobre libev em sistemas Unix e sobre IOCP no Windows. Uma biblioteca é usada para criar um pool de threads líbio, para realizar consultas DNS em modo sem bloqueio está integrado c-ares. Todas as chamadas do sistema que causam bloqueio são executadas dentro do pool de threads e então, como manipuladores de sinal, passam o resultado de seu trabalho de volta por meio de um canal sem nome. A execução do código JavaScript é assegurada através da utilização de um motor desenvolvido pela Google V8 (Além disso, a Microsoft está desenvolvendo uma versão do Node.js com o mecanismo Chakra-Core).
Em sua essência, o Node.js é semelhante aos frameworks Perl AnyEvent, Máquina de eventos Ruby, Python Torcido и implementação eventos em Tcl, mas o loop de eventos em Node.js fica oculto para o desenvolvedor e se assemelha ao tratamento de eventos em um aplicativo da web executado em um navegador. Ao escrever aplicativos para node.js, é necessário levar em consideração as especificidades da programação orientada a eventos, por exemplo, em vez de fazer “var result = db.query(“select..”);” com a espera pela conclusão do trabalho e posterior processamento dos resultados, o Node.js utiliza o princípio da execução assíncrona, ou seja, o código é transformado em “db.query(“select..”, function (resultado) {processamento de resultado});”, no qual o controle passará imediatamente para outro código, e o resultado da consulta será processado conforme os dados chegam. .