Lançamento da plataforma de servidor JavaScript Node.js 14.0

Aconteceu lançamento Node.js 14.0, uma plataforma para executar aplicações de rede em JavaScript. O Node.js 14.0 pertence às branches de suporte a longo prazo, mas esse status será atribuído apenas em outubro, após a estabilização. O suporte para o Node.js 14.0 será realizado até abril de 2023. O suporte para a antiga branch LTS Node.js 12.0 continuará até abril de 2022, e para a penúltima branch LTS 10.0 até abril de 2021. O suporte para a branch intermediária 13.x termina em junho deste ano.

Principais são:

  • Foi estabilizada a capacidade de gerar de forma dinâmica ou ao ocorrer certos eventos relatórios de diagnóstico, nos quais são refletidos eventos que ajudam a diagnosticar problemas como falhas, redução de desempenho, vazamentos de memória, alta carga na CPU, saídas inesperadas de erros, entre outros.
  • Adicionada suporte experimental para a API Async Local Storage , com a implementação da classe AsyncLocalStorage, que pode ser usada para criar estados assíncronos com manipuladores baseados em callbacks e promessas. AsyncLocalStorage permite armazenar dados durante o processamento de solicitações web, semelhante ao armazenamento local para threads em outras linguagens.
  • Removida a exibição de avisos sobre a funcionalidade experimental ao carregar módulos ECMAScript 6 importados e exportados usando expressões import e export. Porém, a implementação dos módulos ESM ainda permanece experimental.
  • O motor V8 foi atualizado para a versão 8.1 (1, 2, 3), que trouxe novas otimizações de desempenho e adicionou novidades, como o novo operador lógico de coalescência "??" (retorna o operando direito se o operando esquerdo for NULL ou indefinido, e vice-versa), o operador "?." para verificações em 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, entre outros.
  • Revisão da API Streams foi realizada, visando melhorar a consistência das interfaces da API Streams e eliminar as diferenças no comportamento das partes básicas do Node.js. Por exemplo, o comportamento de http.OutgoingMessage foi aproximado ao de stream.Writable, e net.Socket ao de stream.Duplex. A opção autoDestroy agora é padrão para "true", implicando a chamada de "_destroy" após a conclusão.
  • Adicionada suporte experimental para a API WASI (WebAssembly System Interface), fornecendo interfaces de programação para interação direta com o sistema operacional (API POSIX para trabalhar com arquivos, sockets, etc.).
  • Os requisitos foram aumentados para as versões mínimas de compiladores e plataformas: macOS 10.13 (High Sierra), GCC 6, Windows a partir da versão 7/2008R2.

Vale lembrar que a plataforma Node.js pode ser utilizada tanto para suporte servidor em aplicações web quanto para criar programas de rede cliente e servidor convencionais. Para ampliar a funcionalidade das aplicações Node.js, foi preparada uma grande coleção de módulos, onde é possível encontrar módulos que implementam servidores e clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integração com diversos frameworks web, manipuladores WebSocket e Ajax, conectores a bancos de dados (MySQL, PostgreSQL, SQLite, MongoDB), motores de template, motores CSS, implementações de algoritmos criptográficos e sistemas de autenticação (OAuth), parsers XML.

Para garantir o processamento de um grande número de solicitações paralelas, o Node.js utiliza um modelo assíncrono de execução de código, baseado em um processamento de eventos em modo não bloqueante e na definição de manipuladores de callback. Os métodos suportados para multiplexação de conexões incluem epoll, kqueue, /dev/poll e select. Para a multiplexação de conexões, a biblioteca libuv, que é uma sobreposição sobre libev em sistemas Unix e sobre IOCP no Windows. Para criar um pool de threads, a biblioteca libeio, para realizar consultas DNS de forma não bloqueante, foi integrado c-ares. Todas as chamadas de sistema que causam bloqueio são realizadas dentro do pool de threads e, assim como os manipuladores de sinal, transmitem os resultados de suas operações de volta através de um canal anônimo (pipe). A execução de código JavaScript é garantida através do motor desenvolvido pela Google V8 (adicionalmente, a Microsoft desenvolve uma versão do Node.js com o motor Chakra-Core).

Essencialmente, o Node.js se assemelha aos frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted e a implementação Eventos em Tcl, mas o loop de eventos (event loop) em Node.js é oculto do desenvolvedor e se assemelha ao tratamento de eventos em uma aplicação web que roda no navegador. Ao escrever aplicações para node.js, é necessário considerar as particularidades da programação orientada a eventos; por exemplo, ao invés de executar "var result = db.query('select..');" com a espera pela conclusão e o subsequente tratamento dos resultados, em Node.js utiliza-se o princípio da execução assíncrona, ou seja, o código é transformado em "db.query('select..', function (result) {tratamento do resultado});", onde o controle passa instantaneamente para o próximo trecho de código, enquanto o resultado da consulta será tratado assim que os dados chegarem.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster