Outubro é o mês de novidades para a comunidade de NodeJS sempre fechando o ciclo de uma versão para LTS e com as novidades planejadas para a próxima e vamos falar um pouco sobre elas. Esse texto será revisado com os feedbacks dos leitores.

Para quem não está acostumado com ciclo de lançamentos do Node as versões pares são LTS (Long Term Support [ou versões de suportes de longo prazo]) e recebem suportes por 30 meses, enquanto as versões ímpares são versões que recebem suportes nos próximos 6 meses e continua em desenvolvimento. Para mais detalhes veja esse vídeo

Qual versão usar? Em produção use a versão LTS e para testes de novas features escolha a versão 11

Com isso temos a versão 10 do node se tornando a versão atual de LTS e a versão com as novidades. O foco dessas versões foram trazer as novidades do Javascript, melhorias de performance, segurança, trace expandido e diagnósticos aprimorados graças à uma integração melhor com o time de V8 do Google Chrome.

Ganhos de performance

Após algumas avaliações iniciais da Node-DC em alguns data centers comparando com a Versão 6, encontrou-se o seguintes ganhos:

  • Operações por segundo 2X maior
  • Queda de latência de 65%
  • Queda de 35% espaço ocupado (ou footprint) no inicio da aplicação

Apesar dos resultados não refletirem todos os cenários podemos observar ganhos consideráveis entre as versões

O que ganhamos com o Node 10 em LTS

A versão 10 conta com melhorias na administração de erros, performance, segurança, diagnósticos tanto de trace quanto de post mortem, mas com foco muito grande em segurança.

N-API ganha o status de estável independente do que é das mudanças da versão 8. Isso facilita na manutenção de plugins usando essa API independente dos upgrades do Node e você pode se aprofundar sobre o assunto nesse link {em inglês}

Anyone writing or maintaining native modules should use N-API.
Qualquer um escrevendo ou mantendo módulos nativos devem usar N-API

HTTP/2 is ready! O HTTP/2 permite um grande ganho de performance em relação ao HTTP/1. Reduz a latência quando ativado full requests e ao usar multiplexing responses, minimiza a sobrecarga do protocolo através de uma eficiente compressão dos cabeçalhos HTTP e adiciona suportes para requisições priorizadas e server push.

A funcionalidade de server push permite que o servidor pró ativamente envie dados junto da resposta da requisição original e que "pense" que possa ser usado na depois. Caso o Browser realmente precise daquela informação ela já está pronta para ser entregue. Para mais detalhes também veja esse artigo

V8 6.8 Node 10 vem com a V8 6.8 e apresenta bons ganhos no gerenciamento de memória usando o trap-base para verificar os limites nas plataformas Linux x64 o que melhora a velocidade de execução de WebAssembly no V8.

Também tem ganhos de performance na destruição de Arrays, Object.assign e também no TypedArray.prototype.sort, você pode encontrar todos a lista novas features da linguagem aqui.

Melhorias na integração com Node e Chrome devtools, agora podemos ver até snapshosts(fotografias) do heap de memória, o que expande e muito as analises de memória que podemos fazer.

NPM 6.4 no Node 10 A versão do gerenciador de pacotes Javascript, foca em estabilidade, segurança e performance, uma melhora de 1700% em relação à primeira versão.

Outras funcionalidades menores como npm-audit que compara seu package-lock.json com o Node.js Security Platform para dizer se tem pacotes vulneráveis. Também inclui o Npm Package Runner e acabou as instalações globais!

O que continua experimental?

  • Workers API: Cada worker tem o seu próprio loop de eventos, parecido com que vemos no Browser, isso com a vantagem de ser ainda melhor debuggado
  • Top level await in REPL: isso permitirá você só rodar node no seu terminal
  • fs Promise API: Essa feature permite você receber promises ao invés de callbacks
  • NodeChakra lançando junto com Time Travel Debugging
  • Suporte AsyncIterators em Node.js Readable Streams

O que temos de novo no Node 11?

A versão que permite os desenvolvedores conhecerem as ultimas features, mas que não estão prontas para produção.

O foco da versão 11 são incrementais e incluem

  • Timers reagendados mesmo na falha do time anterior
  • e sem suporte ao FreeBSD 10.

Você pode encontrar o changelog inicial aqui

NOTA DO AUTOR: Essa é uma tradução não literal do texto October Brings Node.js 10.x to LTS and Node.js 11 to Current!