Novidades no Node.js 8

Em:

E chegou a oitava versão do Node.js!
Quem acompanha o projeto de perto, sabe que a plataforma vem crescendo e evoluindo cada vez mais.
Em 2016, anunciamos aqui no portal o que viria de novidade na versão 7.
Novamente temos um release cheio de novidades, a começar pela nomenclatura.
Eu sempre me perguntei, o que farão quando chegar na V8?
Por trás do Node.js, está o famoso V8. O Node.js desde o início utiliza o “v” em suas versões: Node.js v5, Node.js v6, Node.js v7. E na 8?
Para não confundir, o pessoal optou pelo mais coerente, tirar o “V” da frente, sendo assim, a versão atual é a Node.js 8.

Vamos as principais novidades:

npm 5

Na última semana, o npm anunciou o release do npm v5.0.0, trazendo várias melhorias para o gerenciador de pacotes.
O Node.js 8 já inclui por padrão esta nova versão.

V8 5.8

O Node.js 8 agora vem com a versão 5.8 do V8, o que é bem relevante, pois agora temos todos os benefícios da engine incluídos nesta versão.
O mais legal desta atualização é o fato de que a API binária do V8 5.8 será totalmente compatível com futuras versões, o que torna o desenvolvimento de addons muito mais estável.
Além disso, durante o tempo de vida do Node.js 8, o plano é atualizar o V8 para as versões 5.9 e 6.0.

N-API

Pegando o gancho nos addons, agora o Node.js possui uma nova API experimental que deve substituir o pacote nan, comumente utilizado para estas tarefas.
A N-API permitirá que addons nativos sejam compilados uma vez e reutilizados em múltiplas versões do Node.js.
Será possível rodar estes addons em versões diferentes do V8 e inclusive em outras engines, como o Chakra Core, da Microsoft.

async_hooks

Ainda experimental, o módulo async_hooks permite a monitoração do event loop do Node.js.

WHATWG URL parser

Wow! Agora o Node.js conta com total suporte da nova spec de URL.
O mais legal disso é que agora temos uma equalização desta API tanto no server como no client.
O exemplo abaixo funciona tanto no Node.js 8 como nas versões mais modernas dos navegadores (no navegador não precisa fazer require).

const URL = require('url').URL;
const myURL = new URL('/a/path', 'https://braziljs.org/');
screenshot-from-2017-05-30-20-13-37

Melhor suporte para Promises

Essa me pegou de surpresa!
Agora dentro do objeto util nós temos o método promisify(). Muito legal!
Não precisaremos de pacotes alternativos para “promisificar” nossas funções com callback.
O método promisify encapsula a função e retorna uma Promise.
Veja um exemplo abaixo, tirado do próprio artigo do Node.js sobre o release da versão 8.

const fs = require('fs');
const util = require('util');

const readfile = util.promisify(fs.readFile);

readfile('/some/file')
  .then((data) => { /** ... **/ })
  .catch((err) => { /** ... **/ });

Agora, nativamente, podemos usar Promises em tudo e ainda usar async/await (a partir do Node.js V7.6) 🙂

Códigos de erro

Essa é muito boa também.
Iniciando agora, o Node.js passará a ter códigos estáticos de erro.
A ideia é que no futuro todo erro tenha o seu código, visando a facilitar um pouco a caça aos bugs na hora do desenvolvimento.

LTS

Em outubro será liberado o Carbon, LTS do Node.js 8.
Na imagem abaixo dá para entender bem os planos do Node.js para versões de Long Term Support.
lts

Conclusão

É muito bom ver que o Node.js está evoluindo e amadurecendo desta maneira.
Essa equalização com o todo o ecossistema e o trabalho lado a lado com o time do V8, do npm e comunidade, mostra o profissionalismo atingido na plataforma.
Para quem, assim como eu, acompanha o projeto desde o início, é incrível ver até onde o Node.js chegou.
Vida longa ao Node.js <3

Tem várias outras novidades nesta versão, a lista completa pode ser vista no release oficial: https://nodejs.org/en/blog/release/v8.0.0/

  • Async Await, JS assincronamente síncrono

    O JavaScript tem evoluído muito nestes últimos anos e ainda temos muitas novidades interessantes a caminho! Este artigo é a continuação de uma série onde estamos discutindo as características assíncronas do JavaScript. Confira a lista dos artigos anteriores. As promises são uma daquelas coisas que trouxeram muitas mudanças na forma como trabalhamos com código assíncrono. […]

  • Weekly #188 – Turing award, Meetup F8 e o reino encantado do JavaScript

    A BrazilJS Weekly é a seleção semanal de novidades sobre o desenvolvimento Web no Brasil e no mundo. Ainda não é inscrito? Faça o seu cadastro e receba nossa Newsletter semanal 😎👊🙂👌👍 Sugira conteúdo para a Weekly usando o nosso canal de issues no Github. Um agradecimento especial aos 15 colaboradores da edição nº 188!

  • Weekly #196 – Node.js 8, Web.br 2017 e CodeHouse

    Lançamento do Node.js 8, da Web.br 2017 e do CodeHouse, um projeto bem legal para ajudar programadores em hospedagens para eventos.

Patrocinadores BrazilJS

Gold

Silver

Bronze

Apoio

BrazilJS® é uma iniciativa NASC.     Hosted by Getup