Wersja serwera JavaScript Node.js 16.0

Wydano Node.js 16.0, platformę do uruchamiania aplikacji sieciowych w języku JavaScript. Node.js 16.0 klasyfikowany jest jako gałąź wsparcia długoterminowego, jednak status ten zostanie nadany dopiero w październiku, po ustabilizowaniu się. Node.js 16.0 będzie wspierany do kwietnia 2023 roku. Utrzymanie dotychczasowej gałęzi LTS Node.js 14.0 potrwa do kwietnia 2023, a rok wcześniej ostatniej gałęzi LTS 12.0 do kwietnia 2022. Wsparcie dla gałęzi 10.0 LTS zostanie zakończone za 10 dni.

Główne ulepszenia:

  • Silnik V8 został zaktualizowany do wersji 9.0 (Node.js 15 wykorzystał wersję 8.6), co pozwala na implementację takich funkcji jak właściwość „indices” dla wyrażeń regularnych (zawiera tablicę z pozycjami początkowymi i końcowymi grup dopasowań) , metoda Atomics w Node.js 16 .waitAsync (asynchroniczna wersja Atomics.wait), obsługa używania słowa kluczowego oczekuj w modułach najwyższego poziomu. Wywołania funkcji zostały przyspieszone w sytuacjach, gdy liczba przekazanych argumentów nie odpowiada parametrom zdefiniowanym w funkcji.
  • Interfejs API Timers Promises został ustabilizowany, zapewniając alternatywny zestaw funkcji do pracy z licznikami czasu, które zwracają obiekty Promise jako dane wyjściowe, co eliminuje potrzebę używania util.promisify(). importuj { setTimeout } z „timerów/obietnic”; funkcja asynchroniczna run() { czekaj na setTimeout(5000); console.log('Witaj, świecie!'); } uruchomić();
  • Dodano eksperymentalną implementację Web Crypto API, przeznaczoną do wykonywania podstawowych operacji kryptograficznych po stronie aplikacji webowych, takich jak manipulowanie skrótami kryptograficznymi, generowanie i weryfikacja podpisów cyfrowych, kodowanie i dekodowanie danych różnymi metodami szyfrowania oraz generowanie kryptograficznie bezpiecznych losowe liczby. API udostępnia także funkcje generowania i zarządzania kluczami.
  • N-API (API do tworzenia dodatków) zostało zaktualizowane do wersji 8.
  • Dokonano przejścia na nową wersję menedżera pakietów NPM 7.10.
  • Ustabilizowano implementację klasy AbortController, która opiera się na AbortController Web API i umożliwia anulowanie sygnałów w wybranych API opartych na Promise.
  • Ustabilizowano obsługę trzeciej wersji formatu Source Map, służącego do porównywania wygenerowanych, przetworzonych lub spakowanych modułów z oryginalnym kodem źródłowym.
  • W celu zapewnienia zgodności ze starszymi interfejsami API sieci Web dodano metody bufora.atob(data) i bufor.btoa(data).
  • Rozpoczęło się tworzenie podzespołów dla nowych urządzeń Apple wyposażonych w chip M1 ARM.
  • Na platformie Linux wymagania dotyczące wersji kompilatora zostały podniesione do GCC 8.3.

Przypomnijmy, że platformę Node.js można wykorzystać zarówno do obsługi aplikacji webowych po stronie serwera, jak i do tworzenia zwykłych programów sieciowych klienckich i serwerowych. Aby rozszerzyć funkcjonalność aplikacji dla Node.js przygotowano duży zbiór modułów, w którym można znaleźć moduły z implementacją serwerów i klientów HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduły do ​​integracji z różnymi frameworkami sieciowymi, handlerami WebSocket i Ajax, konektorami do DBMS (MySQL, PostgreSQL, SQLite, MongoDB), silnikami szablonów, silnikami CSS, implementacjami algorytmów kryptograficznych i systemów autoryzacji (OAuth), parserami XML.

Aby zapewnić przetwarzanie dużej liczby równoległych żądań, Node.js wykorzystuje asynchroniczny model wykonywania kodu oparty na nieblokującej obsłudze zdarzeń i definicji procedur obsługi wywołań zwrotnych. Obsługiwane metody multipleksowania połączeń to epoll, kqueue, /dev/poll i select. Do multipleksowania połączeń używana jest biblioteka libuv, która jest dodatkiem do libev w systemach Unix i IOCP w Windows. Biblioteka libeio służy do tworzenia puli wątków, a c-ares jest zintegrowany do wykonywania zapytań DNS w trybie nieblokującym. Wszystkie wywołania systemowe, które powodują blokowanie, są wykonywane wewnątrz puli wątków, a następnie, podobnie jak procedury obsługi sygnałów, przekazują wynik swojej pracy z powrotem przez nienazwany potok (pipe). Wykonanie kodu JavaScript zapewnia wykorzystanie silnika V8 opracowanego przez Google (dodatkowo Microsoft rozwija wersję Node.js z silnikiem Chakra-Core).

W swej istocie Node.js jest podobny do platform Perl AnyEvent, Ruby Event Machine, Python Twisted i implementacji zdarzeń Tcl, ale pętla zdarzeń w Node.js jest ukryta przed programistą i przypomina obsługę zdarzeń w działającej aplikacji internetowej w przeglądarce. Pisząc aplikacje dla node.js, musisz wziąć pod uwagę specyfikę programowania sterowanego zdarzeniami, na przykład zamiast robić „var result = db.query("select..");" z oczekiwaniem na zakończenie pracy i późniejszym przetwarzaniem wyników Node.js wykorzystuje zasadę wykonania asynchronicznego, tj. kod jest przekształcany na "db.query("select..", function (result) {result processing});", w którym sterowanie natychmiast przejdzie do dalszego kodu, a wynik zapytania zostanie przetworzony w miarę napływu danych.

Dodatkowo można odnotować, że firma Deno, założona przez twórcę Node.js w celu opracowania platformy Deno nowej generacji, pozyskała 4.9 mln dolarów inwestycji. Deno w swoim przeznaczeniu jest podobne do Node.js, jednak stara się wyeliminować błędy koncepcyjne popełniane w architekturze Node.js i zapewnić użytkownikom bezpieczniejsze środowisko. Zaznacza się, że rozwiązania biznesowe Deno będą budowane w oparciu o całkowicie otwarte produkty, a model Open Core z wydzieloną płatną funkcjonalnością jest postrzegany jako nieakceptowalny dla platformy Deno.

Źródło: opennet.ru

Dodaj komentarz