Node.js 16 już jest!
Właśnie pojawił się Node.js 16. Nowa wersja zawiera takie nowości i usprawnienia, jak przebudowane binarki Apple Silicon oraz V8 w wersji 9.0. W Node.js 16 znajdziemy również instalator Mac, dostarczony jako gruby plik binarny i będzie on zawierał pliki architektury Intela oraz ARM. Ważnym usprawnieniem w Node.js 16 jest również dodanie kilku dodatkowych stabilnych API.
Najnowsze wydanie można pobrać stąd. Do uruchomienia można również użyć Node Version Manager na UNIX, aby zainstalować Node.js przy pomocy nvm install 16
. A oto dziennik zmian w Node.js 16.
W dalszej części artykułu dokładniej przyjrzymy się niektórym nowinkom, które twórcy wprowadzili w wersji 16.
Aktualizacja V8
Nowa wersja silnika V8 JavaScript, czyli V8 9.0, daje nam wiele usprawnień związanych z wydajnością. Co więcej, dzięki tej aktualizacji, Node.js jest na bieżąco z najnowszymi funkcjami języka JavaScript. Wersją, z której korzystało Node.js 15, było z kolei V8 8.6.
Aktualizacja ta dodaje indeksy dopasowań regex. Funkcja ta pozwala na odczytanie indeksów początku i końca przechwyconego ciągu znaków. Taka tablica stworzona z wcześniej wspomnianych indeksów jest dostępna dzięki właściwości .indices
, kiedy wyrażenie regularne ma flagę /d
.
Oto przykład kodu z oficjalnego wpisu dotyczącego Node.js 16:
> const matchObj = /(Java)(Script)/d.exec('JavaScript');
undefined
> matchObj.indices
[ [ 0, 10 ], [ 0, 4 ], [ 4, 10 ], groups: undefined ]
> matchObj.indices[0]; // Match
[ 0, 10 ]
> matchObj.indices[1]; // First capture group
[ 0, 4 ]
> matchObj.indices[2]; // Second capture group
[ 4, 10 ]
Więcej informacji na temat nowego V8 znajdziecie tutaj.
Nowe API
W Node.js 16 wprowadzone zostało nowe API - nosi ono nazwę Timers Promises API. Zapewnia zestaw funkcji timera, które zwracają obiekty Promise. Nie ma więc wtedy potrzeby korzystania z util.promisify()
.
Oto przykład kodu pochodzący z oficjalnego wpisu na temat Node.js 16.
import { setTimeout } from 'timers/promises';
async function run() {
await setTimeout(5000);
console.log('Hello, World!');
}
run();
API to zostało dodane już wersji 15 - tym razem awansuje jednak z funkcji eksperymentalnej do funkcji stabilnej.
Apple Silicon w Node.js
Jak wspominaliśmy wcześniej Node.js 16 będzie pierwszą wersją tego środowiska uruchomieniowego zawierającą wcześniej przygotowane binarki dla Apple Silicon. Dostarczone zostały tutaj oddzielne pliki dla architektury Intela, czyli darwin-x64
, oraz dla architektury ARM - darwin-arm64
.
Instalator macOS będzie zawierał obydwie binarki.
Inne funkcje
W Node.js funkcje dodaje się na bieżąco. To dlatego, wiele z nich, które są dostępne w 16, były dostępne już w wersji 15. Oto niektóre:
- Eksperymentalna implementacja Web Crypto API
- npm 7
- Stabilna implementacja AbortController, oparta na AbortController Web API
- Stabilna implementacja Source Maps v3
Wsparcie
Nowe wydanie Node.js staje się jednocześnie następną wersją LTS, czyli Long Term Support. Node.js 12 będzie mieć wsparcie do kwietnia 2022, 14 - do kwietnia 2023, a Node.js 10 będzie wspierany już tylko do końca kwietnia 2021.
Więcej szczegółów możecie znaleźć tutaj.