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/

  • React: do básico ao avançado – Parte 4

    React é uma biblioteca JavaScript para desenvolvimento de interfaces de usuário. Esta é a quarta parte de uma série de artigos que ensina a desenvolver e estruturar aplicações com JavaScript e React. Clique aqui caso você ainda não tenha lido a terceira parte. Na parte anterior, aprendemos o que React soluciona e como ele soluciona. […]

  • Brincando com o Acelerômetro

    Diversos devices como celulares (praticamente todos os smartphones) e boa parte dos notebooks modernos, já contam com o acelerômetro. O acelerômetro é a parte responsável por identificar a posição ou giro do aparelho. É o que grande parte de nossos joguinhos usa, pelo SO do aparelho, ou por apps que exibem algo diferente conforme usamos […]

  • Uma breve introdução ao Docker com Node.js

    Docker é um container engine criado para ser agnóstico ao hardware e a plataforma utilizada. É também um dos principais projetos open source da atualidade. Seu modelo de virtualização é diferente do que tradicionalmente conhecemos, pois está no nível do sistema operacional. Isso significa que, na prática, quando criamos containers, eles nada mais são que […]

Patrocinadores BrazilJS

Gold

Silver

Bronze

Apoio

BrazilJS® é uma iniciativa NASC.     Hosted by Getup