A plataforma de servidor JavaScript Node.js 19.0 está disponível

Foi lançado o Node.js 19.0, uma plataforma para execução de aplicativos de rede em JavaScript. O Node.js 19 pertence ao ramo com suporte regular, com atualizações que serão lançadas até junho de 2023. Nos próximos dias, a estabilização do ramo Node.js 18 será concluída, recebendo o status LTS, que será mantido até abril de 2025. O suporte à antiga versão LTS Node.js 16.0 continuará até setembro de 2023, e à versão LTS anterior 14.0 até abril de 2023.

Principais melhorias:

  • O motor V8 foi atualizado para a versão 10.7, utilizada no Chromium 107. Entre as mudanças no motor em comparação com o ramo Node.js 18, destaca-se a implementação da terceira versão da API Intl.NumberFormat, que adicionou novas funções formatRange(), formatRangeToParts() e selectRange(), agrupamento de conjuntos, novas opções de arredondamento e definição de precisão, além da 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.
  • Uma nova opção experimental ‘node —watch’ foi introduzida, implementando um modo de monitoramento que reinicia o processo ao alterar um arquivo importado (por exemplo, ao executar ‘node —watch index.js’, o processo será automaticamente reiniciado ao modificar index.js).
  • O suporte para o mecanismo HTTP 1.1 Keep-Alive foi habilitado para todas as conexões HTTP/HTTPS, mantendo a conexão aberta por um determinado tempo para processar múltiplas solicitações HTTP em uma única conexão. Espera-se que a utilização do Keep-Alive aumente a largura de banda e o desempenho. Por padrão, o tempo limite para manter a conexão aberta é de 5 segundos. O cliente HTTP agora suporta a análise do cabeçalho HTTP Keep-Alive nas respostas servidor, e o servidor HTTP Node.js agora tem desconexão automática de clientes inativos que utilizam Keep-Alive.
  • O API WebCrypto foi movido para a categoria estável, exceto as funções que utilizam os algoritmos Ed25519, Ed448, X25519 e X448. Para acessar o módulo WebCrypto, agora pode-se usar globalThis.crypto ou require(‘node:crypto’).webcrypto.
  • O suporte para as ferramentas de rastreamento DTrace, SystemTap e ETW (Event Tracing for Windows) foi removido, uma vez que sua manutenção foi considerada impraticável devido à complexidade de suporte na forma atual sem um plano adequado para sua manutenção.

A plataforma Node.js pode ser utilizada tanto para suporte do lado do servidor de aplicações web quanto para criar programas de rede comuns tanto do lado do cliente quanto do servidor. Para expandir a funcionalidade das aplicações Node.js, foi preparada uma grande coleção de módulos, onde é possível encontrar módulos com implementações 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 de criptografia e sistemas de autorizaçã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 processamento de eventos em modo não bloqueante e determinação de manipuladores de callback. Como métodos de multiplexação de conexões, são suportados métodos como epoll, kqueue, /dev/poll e select. Para a multiplexação de conexões, usa-se a biblioteca libuv, que é uma camada de abstração sobre libev em sistemas Unix e sobre IOCP no Windows. Para criar um pool de threads, a biblioteca libeio é utilizada, e para a execução de consultas DNS de maneira não bloqueante, o c-ares foi integrado. Todas as chamadas de sistema que causam bloqueio são executadas dentro do pool de threads e, assim como os manipuladores de sinais, transmitem o resultado de seu trabalho de volta através de um canal não nomeado (pipe). A execução de código JavaScript é garantida pela utilização do mecanismo V8 desenvolvido pela Google (adicionalmente, a Microsoft desenvolve uma versão do Node.js com o mecanismo Chakra-Core).

Essencialmente, o Node.js é semelhante aos frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted e à implementação de eventos em Tcl, mas o ciclo de processamento de eventos (event loop) no Node.js é oculto do desenvolvedor e se assemelha ao processamento de eventos em uma aplicação web que funciona em um navegador. Ao escrever aplicativos para Node.js, é necessário considerar a especificidade da programação orientada a eventos; por exemplo, em vez de executar "var result = db.query('select..');" aguardando a conclusão e posterior processamento dos resultados, no Node.js utiliza-se o princípio da execução assíncrona, ou seja, o código é transformado em "db.query('select..', function (result) { processar resultado });", onde o controle é imediatamente transferido para o restante do código, e o resultado da consulta será processado conforme os dados forem recebidos.

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