Versão 16 do Node.js: melhor visão geral





Em 20 de abril, uma nova versão 16 do Node.js foi lançada. Entre as principais mudanças estão a atualização do motor JavaScript V8 para a versão 9.0, binários integrados (binários) para Apple Silicon e várias APIs, mas as primeiras coisas primeiro.



Uma lista completa de mudanças pode ser encontrada aqui .



O Node.js 16 substituirá o Node.js 15 como a versão "atual". Este status permanecerá com ele pelos próximos 6 meses. Então, em outubro de 2021, o Node.js 16 fará a transição para o status de suporte de longo prazo (LTS). Após a transição para o status LTS, ele receberá o codinome 'Gallium'.



Detalhes da versão podem ser encontrados no repositório Node.js Release Working Group... Por enquanto, vamos ver as melhores notícias.



Atualizando V8 para a versão 9.0



A atualização do mecanismo V8 JavaScript é uma melhoria de desempenho, além de fornecer suporte a Node.js para os recursos JavaScript mais recentes. A propósito, o Node.js 15 usava o V8 versão 8.6.



As principais mudanças no mecanismo incluem suporte para índices de correspondência de expressão regular, bem como acesso aprimorado (mais rápido) à propriedade "super".



Uma lista completa de mudanças pode ser encontrada aqui .



Índices de conformidade


Os IDs correspondentes permitem que os desenvolvedores obtenham uma matriz de submatrizes contendo as posições inicial e final (índices) de grupos de captura em uma expressão regular quando houver uma correspondência (ou várias correspondências). Este array está disponível através da propriedade "indices" do objeto match. Observe que a expressão regular usada para encontrar correspondências deve ter o sinalizador "/ d".



const re = /(a)(b)/d //  .      /d

const m = re.exec('ab') //   

console.log(m.indices[0]) //   —   

// [0, 2]

console.log(m.indices[1]) //   —   

// [0, 1]

console.log(m.indices[2]) //   —   

// [1, 2]


      
      





Acessando a propriedade "super"


O acesso à super propriedade foi melhorado através do uso de um sistema de cache embutido e geração de código otimizada no TurboFan (TurboFan é o compilador, Ignition é responsável por interpretar o código no V8). De acordo com os desenvolvedores do V8, a velocidade de acesso ao super tornou-se quase igual à velocidade de acesso a uma propriedade normal.





Eixo "Y" - o número de operações. Eixo "X" - acesso à propriedade usual, acesso à propriedade "super" (antes da atualização), acesso à propriedade "super" (após a atualização).



API Stable Timers Promises



A API Timers Promises fornece um conjunto alternativo de temporizadores que retornam um objeto "Promise", eliminando a necessidade de util.promisify () .



import { setTimeout } from 'timers/promises'

async function run() {

  const greet = await setTimeout(3000, 'Hi!')

  console.log(greet) // Hi!

}

run()


      
      





A API Timers Promises foi introduzida no Node.js 15 como um recurso experimental. Agora, ele adquiriu o status de uma interface estável.



Outros novos recursos



A natureza do processo de lançamento é tal que novos recursos aparecem no lançamento "atual" aproximadamente a cada 2 semanas. Por esse motivo, muitos dos recursos estavam disponíveis no Node.js 15, mas ainda são relativamente novos para o tempo de execução.



Entre essas possibilidades estão as seguintes:



  • Implementação experimental do padrão Web Crypto API
  • npm 7 (v7.10.0)
  • Node-API versão 8
  • Implementação AbortController estável com base na API da Web AbortController
  • Implementação estável do Source Maps v3 (NODE_OPTIONS = - enable-source-maps no terminal ou {"enable-source-maps": true} em .mocharc.json)
  • atob (buffer.atob(data)) btoa (buffer.btoa(data)), API (/ «Base64»)




O Node.js fornece binários integrados para várias plataformas diferentes. Para cada versão principal, o conjunto mínimo de instrumentos é avaliado e expandido quanto possível.



O Node.js 16 será o primeiro lançamento de binários embutidos para o Apple Silicon . Embora tarballs separados sejam fornecidos para as arquiteturas Intel (darwin-x64) e ARM (darwin-arm64), o "instalador" (.pkg) para macOS é um binário de múltiplas arquiteturas.



Para plataformas baseadas em Linux, o nível mínimo de GCC para gerar Node.js 16 é GCC 8.3.



Detalhes sobre as ferramentas e compiladores suportados podem ser encontrados aqui .



Fim do suporte



Os desenvolvedores do Node.js tentam minimizar o número de mudanças que podem levar a interrupções no ecossistema (ou seja, o trabalho das bibliotecas do Node.js. Para detectar tais mudanças, GITGM (Canário na Mina de Ouro) é usado .



No entanto, alguns recursos foram descontinuados. Alguns dos mais importantes são o acesso a process.bindings () para alguns módulos do kernel, como process.binding ('http_parser') ou process.binding ('url').



Deve-se notar que a nova versão principal é o resultado dos esforços de um grande número de pessoas interessadas em melhorar e desenvolver o Node.js (contribuidores e colaboradores). Além disso, para preparar um novo lançamento para produção, muito trabalho é feito Node.js Build Working Group .






Nossos servidores podem ser usados ​​para desenvolvimento com node.js.



Cadastre-se pelo link acima ou clicando no banner e ganhe 10% de desconto no primeiro mês de aluguel de um servidor de qualquer configuração!






All Articles