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!