Houve o lançamento do Node.js 26.0.0, uma plataforma para a execução de aplicativos de rede em JavaScript. O Node.js 26.0 foi classificado na linha de versões com suporte a longo prazo, mas esse status será atribuído apenas em outubro, após a estabilização. O suporte para o Node.js 26.x será mantido até maio de 2029. O suporte para a versão anterior LTS do Node.js 24.x será mantido até 30 de abril de 2028, enquanto a versão anterior 22.x será mantida até 30 de abril de 2027. O suporte para a versão LTS 20.x foi encerrado em 30 de abril de 2026, e o suporte para a versão intermediária Node.js 25.x será encerrado em 1 de junho de 2026.
Principais melhorias:
- O API Temporal foi ativado por padrão, oferecendo um conjunto alternativo de métodos para trabalhar com datas e horas. A API permite manipular datas com e sem fusos horários, converter tempo, formatar a saída e realizar operações aritméticas com o tempo. O tempo pode ser especificado em uma representação independente do fuso horário (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), com referência ao fuso horário (Temporal.ZonedDateTime) e em representação temporal (Temporal.Instant — número de nanossegundos desde 1 de janeiro de 1970).
- O motor V8 foi atualizado para a versão 14.6, utilizada no Chromium 146. As melhorias em comparação com o lançamento anterior do Node.js incluem a possibilidade de combinar vários iteradores em um usando o método Iterator.concat(), bem como a implementação da especificação "upsert" para simplificar o trabalho com coleções de pares chave/valor em objetos JavaScript do tipo Map e WeakMap.
- O cliente HTTP undici foi atualizado para a versão 8.x.
- O método http.Server.prototype.writeHeader() foi removido, e em seu lugar deve-se usar http.Server.prototype.writeHead().
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 lidar com um grande número de solicitações paralelas, o Node.js utiliza um modelo assíncrono de execução de código, baseado no processamento de eventos em modo não bloqueante e na definição de manipuladores de callback. Métodos como epoll, kqueue, /dev/poll e select são suportados como maneiras de multiplexar conexões. A biblioteca libuv, que é uma camada superior em relação à libev em sistemas Unix e ao IOCP no Windows, é usada para multiplexação de conexões. Para criar um pool de threads, é utilizada a biblioteca libeio, e para executar consultas DNS de forma não bloqueante, o c-ares está integrado. Todas as chamadas de sistema que causam bloqueio são executadas dentro do pool de threads e então, assim como os manipuladores de sinal, transmitem o resultado de seu trabalho por meio de um canal anônimo (pipe).
A execução do código JavaScript é garantida através do uso do motor V8 desenvolvido pela Google. Em essência, o Node.js é semelhante aos frameworks Perl AnyEvent, Ruby Event Machine, Python asyncio e à implementação de eventos em Tcl, mas o loop de eventos no Node.js é oculto do desenvolvedor e lembra o processamento de eventos em um aplicativo da web que funciona no navegador.
Fonte: opennet.ru
