Concrete Logo
Hamburger button

O novo LTS e outras novidades do Node 11

  • Blog
  • 26 de Outubro de 2018

Outubro é O mês para a comunidade de NodeJS, porque é quando se fecha o ciclo de uma versão para LTS e se apresenta algumas novidades. Neste post vou falar um pouco sobre elas.

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 recebem suportes para os próximos seis 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 a uma integração melhor com o time de V8 do Google Chrome.

Ganhos de performance

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

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

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

O que temos 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 são as mudanças da versão 8. Isso facilita na manutenção de plugins usando essa API independente dos upgrades do Node, mas você pode se aprofundar sobre o assunto nesse link.

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 (proativamente) envie dados junto da resposta da requisição original, pensando que pode usar ela 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 do TypedArray.prototype.sort. Você pode encontrar todos na lista de novas features da linguagem.

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 análises 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.

Há outras funcionalidades menores como npm-audit, que compara seu package-lock.json com o Node.js Security Platform para dizer se têm pacotes vulneráveis. Inclui aí o o Npm Package Runner para encerrar a parte das instalações globais.

O que continua experimental?

  • Workers API: cada worker tem o seu próprio loop de eventos, parecido com o que vemos no Browser, isso com a vantagem de ser ainda melhor debuggado;
  • Top level await in REPL: isso vai permitir você só rodar Node no seu terminal;
  • fs Promise API: essa feature permite que você receba 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 permite que os desenvolvedores conheçam as últimas features, mas elas ainda 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: esta é uma tradução não literal do texto “October Brings Node.js 10.x to LTS and Node.js 11 to Current”.

A Concrete é uma empresa da Accenture especializada no desenvolvimento ágil de produtos digitais. No capítulo de JavaScript nós trabalhamos com metas possíveis, porém desafiadoras. Fazemos parte de um time multidisciplinar, autogerenciado e auto-organizado e focamos no aprendizado contínuo, seguindo sempre práticas ágeis e lean de desenvolvimento. Nosso objetivo é transformar ideias em resultados concretos, com excelência! Quer fazer parte? Envie seu currículo para trabalheconosco@concrete.com.br.