Plataforma JavaScript Node.js 19.0 do lado do servidor disponível

Foi lançado o Node.js 19.0, uma plataforma para execução de aplicações de rede em JavaScript. Node.js 19 é um branch de suporte regular com atualizações disponíveis até junho de 2023. Nos próximos dias será concluída a estabilização da filial Node.js 18, que receberá o status LTS e terá suporte até abril de 2025. A manutenção da ramificação LTS anterior do Node.js 16.0 durará até setembro de 2023, e do penúltimo ramo LTS 14.0 até abril de 2023.

Principais melhorias:

  • O motor V8 foi atualizado para a versão 10.7, utilizada no Chromium 107. Dentre as mudanças no motor em relação ao branch Node.js 18, destaca-se a implementação da terceira versão da API Intl.NumberFormat, que adiciona novas funções formatRange (), formatRangeToParts() e selectRange(), agrupamento de conjuntos, novas opções de arredondamento e definição de precisão, capacidade de interpretar strings como números decimais. As dependências incluídas llhttp 8.1.0 e npm 8.19.2 também foram atualizadas.
  • Foi proposto um comando experimental "node -watch" que implementa um modo de observação que garante que o processo seja reiniciado quando o arquivo importado for alterado (por exemplo, se "node -watch index.js" for executado, o processo será reiniciado automaticamente quando index.js muda).
  • Para todas as conexões HTTP/HTTPS de saída, está habilitado o suporte ao mecanismo HTTP 1.1 Keep-Alive, que deixa a conexão aberta por um determinado tempo para processar diversas solicitações HTTP dentro da mesma conexão. Espera-se que o Keep-Alive melhore o rendimento e o desempenho. Por padrão, o tempo limite de abertura da conexão é definido como 5 segundos. O suporte para análise do cabeçalho HTTP Keep-Alive nas respostas do servidor foi adicionado à implementação do cliente HTTP, e a desconexão automática de clientes inativos usando Keep-Alive foi adicionada à implementação do servidor HTTP Node.js.
  • A API WebCrypto foi transferida para a categoria estável, com exceção das funções que utilizam os algoritmos Ed25519, Ed448, X25519 e X448. Para acessar o módulo WebCrypto agora você pode usar globalThis.crypto ou require('node:crypto').webcrypto.
  • Foi removido o suporte às ferramentas de rastreamento DTrace, SystemTap e ETW (Event Tracing for Windows), cuja manutenção era considerada inadequada devido à complexidade de mantê-lo atualizado na ausência de um plano de suporte adequado.

A plataforma Node.js pode ser usada tanto para suporte de aplicativos da Web no lado do servidor quanto para criar programas comuns de rede de clientes e servidores. Para ampliar a funcionalidade das aplicações para Node.js, foi preparado um grande acervo 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 templates, 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. Para multiplexação de conexões, é utilizada a biblioteca libuv, que é um complemento da libev em sistemas Unix e do IOCP no Windows. A biblioteca libeio é usada para criar um pool de threads e c-ares é integrado para realizar consultas DNS em modo sem bloqueio. 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 é garantida através da utilização do motor V8 desenvolvido pelo Google (além disso, a Microsoft está desenvolvendo uma versão do Node.js com o motor Chakra-Core).

Em sua essência, o Node.js é semelhante aos frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted e à implementação de eventos em Tcl, mas o loop de eventos no Node.js está oculto do desenvolvedor e se assemelha ao processamento de eventos em um aplicativo da web rodando no 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 (result) {processamento de resultado});”, no qual o controle passará imediatamente para outro código, e o resultado da consulta será processado conforme os dados chegam.

Fonte: opennet.ru

Adicionar um comentário