Desenvolvimento

21 out, 2016

Um ano após o merge do Node.JS, o que esperar?

Publicidade

Há não muito tempo, a comunidade Node.JS se rompeu e originou o io.js. Somente para contextualizar, vamos recapitular brevemente. Fedor Induthy fez um fork do Node.Js para ter sempre as atualizações mais recentes da V8 e evitar o estilo de governança da Joyent. Com isso, ele implementou uma governança aberta para o io.js.

O impacto na comunidade foi grande, e muitos ficaram sem saber se o Node.JS continuava uma boa opção. Em fevereiro de 2015, anunciaram a intenção de criar a Node Foundation e, em junho do mesmo ano, as comunidades de Node.JS e de io.js decidiram trabalhar juntas. Em setembro de 2015, foi criado o merge entre as versões 0.12 do Node.JS e a versão 3.3 do io.js, o que gerou a versão 4.4 do Node.JS, que não estava mais sobre o controle da Joyent.

Como novidade do merge, foram adicionadas as features da ES6 e o plano de suporte de longo prazo (LTS, em inglês). Ufa! Depois dessa história, agora um ano depois do início dela, o que podemos esperar do Node.JS?

V.7

Há algumas semanas, recebemos a versão beta do Node.JS v.7 e algumas novidades receberemos somente quando a versão sair do beta, principalmente em questões de experimentos e desenvolvimento futuro. Desde o merge, as versões ímpares são para features experimentais e as versões pares, para features de longo prazo, para quem precisa de estabilidade a cada atualização.

Diversas empresas têm usado Node.JS. Desde a NASA, em ferramentas para a segurança de astronautas, até o Uber, para conectar os passageiros aos motoristas, do desktop até APIs, e até mesmo em usos como machine learning e robótica. Esses ambientes exigem experimentos e mudam a forma como nós, desenvolvedores, criamos aplicações. Essas versões experimentais são de ajuda para diversos cenários que envolvem segurança, performance e melhorias a serem testadas.

Melhorias contínuas ao suporte da linguagem

O Node.JS v.7 tem a versão 5.4 da V8, que tem como foco melhorias de performance relacionadas à memória e 98% de suporte para features da ES6 (na v.5, eram 56%).

O time core do Node.JS continua melhorando o suporte para ES6/7, e algumas features chaves que serão incluídas em releases futuras são Promises compatíveis com o sistema de debugg, além de APIs core do Node.JS que, por sua vez, são compatíveis com Promises. Também podemos esperar uma implementação nativa do Async/Await e de módulos adicionais da ES6/7.

Módulos e sua estabilidade

O release beta da v.7 tem como objetivo ser a primeira versão para que o público geral teste. Então, é bem focada em estabilidade, principalmente no que se refere aos módulos do npm.

Módulos são a razão para o crescimento do Node.JS, que mais que dobrou nos últimos quatro anos. É o ambiente no qual mais se encontram módulos e um dos ecossistemas com crescimento mais rápido. Por isso, o Team Core do Node.JS está bem preocupado em manter os módulos funcionais. Este mês, a v.6 se torna a versão LTS e traz uma modificação para ajudar na performance da API de file system, que acabava quebrando os módulos e foi deixada de lado. A v.7, mas conta com a resolução desses problemas enquanto mantém a performance.

Outra coisa que time técnico do Node fez foi usar um utilitário para executar os testes unitários de vários módulos, apontando as incompatibilidades com a versão do Node e garantindo, assim, a compatibilidade entre versões e manutenção do ecossistema. Eles buscaram os 68 módulos principais, que são mais dependentes, para garantir que as próximas atualizações não os quebrassem. Se quiser saber mais a respeito, pode ver mais neste link.

Melhorias nos padrões Web

O node v.7 terá uma implementação do parser de url WHATWG, deixando um padrão semelhante ao que acontece no browser. Também teremos melhorias na conformidade às especificações do HTTP 1.1 para melhor validação de inputs, na segurança e no suporte futuro para o HTTP/2.

Node em todo lugar

Você já deve ter ouvido falar sobre como o Node.JS se encaixa bem com IoT. E o Node.js Core Technical Steering Committee (TSC) tem trabalhado para fique mais fácil integrar o Node.JS à IoT, inclusive no Electron.

VM Neutra

Por padrão, a VM do Node.JS é a V8, mas existe um grande esforço para que o Node.JS seja completamente agnóstico quanto a isso. Até o ano que vem, a ideia é que outras VMs sejam facilmente implementadas. Com esse objetivo, o TSC tem trabalhado para usar o Chakra como VM no Node.JS.

Inclusividade para criar diversidade

O time core do Node.JS ainda tem trabalhado para aumentar a diversidade dentro da comunidade. Isso ajuda porque os conhecimentos são compartilhados, criando aprendizado e crescimento mútuo e fortalecendo a plataforma. Para isso, é necessário ter inclusão. O Node Together é uma iniciativa para criar um ambiente inclusivo em que grupos minoritários podem entrar, aprender e crescer com a comunidade. O Node Together foi criado neste ano para ajudar as minorias, e você pode encontrar mais informações aqui.

Após um ano do merge, podemos ver que a comunidade Node.JS está bem ativa e com muitas novidades. Isso com certeza vai ajudar a comunidade crescer e passar confiança para vermos o Node.JS em cada vez mais lugares. E você, o que mais aguarda nas próximas versões do Node.JS? Nos conte nos comentários!

*Artigo escrito com base no artigo: The Progress of Node.js a Year Post Node.js and io.js Merge and Where the Technology is Going

**

Artigo publicado originalmente em http://www.concretesolutions.com.br/2016/10/12/um-ano-apos-o-merge-do-node-js/.