Lanzamiento de Node.js 16: mejor descripción general





El 20 de abril, se lanzó una nueva versión 16 de Node.js. Entre los principales cambios se encuentran la actualización del motor JavaScript V8 a la versión 9.0, binarios incorporados (binarios) para Apple Silicon y varias API, pero lo primero es lo primero.



Puede encontrar una lista completa de cambios aquí .



Node.js 16 reemplazará a Node.js 15 como la versión "actual". Este estado permanecerá con él durante los próximos 6 meses. Luego, en octubre de 2021, Node.js 16 pasará al estado de soporte a largo plazo (LTS). Tras la transición al estado LTS, recibirá el nombre en clave 'Galio'. Los



detalles de la versión se pueden encontrar en el repositorio del Grupo de trabajo de versiones de Node.js... Por ahora, repasemos las mejores noticias.



Actualización de V8 a la versión 9.0



La actualización del motor de JavaScript V8 es una mejora del rendimiento, además de proporcionar compatibilidad con Node.js para las últimas funciones de JavaScript. Por cierto, Node.js 15 usó V8 versión 8.6.



Los principales cambios en el motor incluyen soporte para índices de coincidencia de expresiones regulares, así como un acceso mejorado (más rápido) a la propiedad "super".



Puede encontrar una lista completa de cambios aquí .



Índices de conformidad


Los ID coincidentes permiten a los desarrolladores obtener una matriz de submatrices que contienen las posiciones inicial y final (índices) de los grupos de captura en una expresión regular cuando hay una coincidencia (o varias coincidencias). Esta matriz está disponible a través de la propiedad "índices" del objeto de coincidencia. Tenga en cuenta que la expresión regular utilizada para buscar coincidencias debe tener el indicador "/ 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]


      
      





Accediendo a la propiedad "super"


El acceso a la superpropiedad se ha mejorado mediante el uso de un sistema de caché integrado y la generación de código optimizada en TurboFan (TurboFan es el compilador, Ignition es responsable de interpretar el código en V8). Según los desarrolladores de V8, la velocidad de acceso a super se ha vuelto casi la misma que la velocidad de acceso a una propiedad normal.





Eje "Y": el número de operaciones. Eje "X": acceso a la propiedad habitual, acceso a la propiedad "super" (antes de la actualización), acceso a la propiedad "super" (después de la actualización).



API Stable Timers Promises



La API Timers Promises proporciona un conjunto alternativo de temporizadores que devuelven un objeto "Promise", eliminando la necesidad de util.promisify () .



import { setTimeout } from 'timers/promises'

async function run() {

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

  console.log(greet) // Hi!

}

run()


      
      





La API Timers Promises se introdujo en Node.js 15 como una función experimental. Ahora ha adquirido el estado de una interfaz estable.



Otras novedades



La naturaleza del proceso de lanzamiento es tal que aparecen nuevas características en el lanzamiento "actual" aproximadamente cada 2 semanas. Por esta razón, muchas de las funciones estaban disponibles en Node.js 15, pero aún son relativamente nuevas en el tiempo de ejecución.



Entre estas posibilidades se encuentran las siguientes:



  • Implementación experimental del estándar Web Crypto API
  • npm 7 (v7.10.0)
  • Nodo-API versión 8
  • Implementación estable de AbortController basada en la API web de AbortController
  • Implementación estable de Source Maps v3 (NODE_OPTIONS = - enable-source-maps en la terminal o {"enable-source-maps": true} en .mocharc.json)
  • atob (buffer.atob(data)) btoa (buffer.btoa(data)), API (/ «Base64»)




Node.js proporciona binarios integrados para varias plataformas diferentes. Para cada versión importante, el conjunto mínimo de instrumentos se evalúa y amplía como sea posible.



Node.js 16 será el primer lanzamiento de binarios en línea para Apple Silicon . Si bien se proporcionan archivos tar separados para las arquitecturas Intel (darwin-x64) y ARM (darwin-arm64), el "instalador" (.pkg) para macOS es un binario de múltiples arquitecturas.



Para las plataformas basadas en Linux, el nivel mínimo de GCC para generar Node.js 16 es GCC 8.3.



Los detalles sobre las herramientas y los compiladores compatibles se pueden encontrar aquí .



Fin del soporte



Los desarrolladores de Node.js intentan minimizar la cantidad de cambios que pueden provocar interrupciones en el ecosistema (es decir, el trabajo de las bibliotecas de Node.js). Para detectar tales cambios, se utiliza GITGM (Canary in the Gold Mine) .



Sin embargo, algunas funciones han quedado obsoletas. Algunos de los más importantes son el acceso a process.bindings () para algunos módulos del kernel, como process.binding ('http_parser') o process.binding ('url').



Cabe señalar que la nueva versión principal es el resultado de los esfuerzos de un gran número de personas interesadas en mejorar y desarrollar aún más Node.js (contribuyentes y colaboradores). Además, para preparar una nueva versión para producción, se hace mucho trabajo Node.js Build Working Group .






Nuestros servidores se pueden utilizar para el desarrollo con node.js.



Regístrese usando el enlace de arriba o haciendo clic en el banner y obtenga un 10% de descuento durante el primer mes de alquiler de un servidor de cualquier configuración.






All Articles