Wydanie serwerowej platformy JavaScript Node.js 13.0

Dostępny wydanie Node.js 13.0, platformy do uruchamiania aplikacji sieciowych w języku JavaScript. Jednocześnie zakończono stabilizację poprzedniej gałęzi Node.js 12.x, która została przeniesiona do kategorii wydań z długoterminowym wsparciem, aktualizacje dla której będą wydawane przez 4 lata. Wsparcie dla poprzedniej gałęzi LTS Node.js 10.0 będzie trwało do kwietnia 2021 roku, a dla gałęzi LTS 8.0 do stycznia 2020 roku.

Podstawowe ulepszenia:

  • Silnik V8 zaktualizowano do wersji 7.8, w której zastosowano nowe metody optymalizacji wydajności, poprawiono destrukturyzację obiektów, zmniejszono zużycie pamięci i skrócono czas przygotowania do wykonania WebAssembly;
  • Domyślnie włączono pełne wsparcie internacjonalizacji i Unicode na bazie bibliotek ICU (International Components for Unicode), umożliwiająca programistom pisanie kodu, który wspiera pracę z różnymi językami i lokalizacjami. Moduł full-icu jest teraz domyślnie zainstalowany;
  • Stabilizowano API Workers Threads, umożliwiające tworzenie wielowątkowych cykli przetwarzania zdarzeń (event loop). Implementacja opiera się na module worker_threads, który umożliwia uruchamianie kodu JavaScript w kilku równoległych wątkach. Stabilne wsparcie API Workers Threads zostało także przeniesione do gałęzi LTS Node.js 12.x;
  • Podwyższono wymagania dotyczące platform. Do kompilacji potrzebna jest teraz wymagana co najmniej macOS 10.11 (wymagane Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Poprawiono wsparcie dla Pythona 3. W przypadku zainstalowania zarówno Pythona 2, jak i Pythona 3, wciąż używany jest Python 2, ale dodano możliwość kompilacji przy zainstalowanym tylko Pythonie 3;
  • Usunięto starą implementację parsera HTTP ("—http-parser=legacy"). Usunięto lub przeniesiono do kategorii przestarzałych wywołania i właściwości FSWatcher.prototype.start(), ChildProcess._channel, metoda open() w obiektach ReadStream i WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • Następnie została wydana aktualizacja 13.0.1, w której usunięto kilka błędów. W tym rozwiązano problem z wyświetlaniem w npm 6.12.0 ostrzeżenia dotyczącego używania nieobsługiwanej wersji.

Przypominamy, że platforma Node.js może być używana zarówno do serwerowego wsparcia działania aplikacji internetowych, jak i do tworzenia standardowych programów sieciowych dla klientów i serwerów. W celu rozszerzenia funkcjonalności aplikacji dla Node.js przygotowano dużą kolekcję modułów, w której 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 webowymi, obsługiwacze WebSocket i Ajax, konektory do baz danych (MySQL, PostgreSQL, SQLite, MongoDB), silniki szablonów, silniki CSS, implementacje algorytmów kryptograficznych i systemów autoryzacji (OAuth), parsery XML.

Aby zapewnić obsługę dużej liczby równoległych zapytań, Node.js wykorzystuje asynchroniczny model uruchamiania kodu, oparty na obsłudze zdarzeń w trybie nieblokującym oraz definiowaniu funkcji callback. Metody multiplexowania połączeń obejmują takie mechanizmy jak epoll, kqueue, /dev/poll i select. Do multiplexowania połączeń używana jest biblioteka libuv, która jest nadbudową nad libev w systemach Unix i nad IOCP w Windows. Do tworzenia puli wątków (thread pool) wykorzystywana jest biblioteka libeio, do wykonywania zapytań DNS w trybie nieblokującym zintegrowano c-ares. Wszystkie wywołania systemowe, które mogą wywoływać blokowanie, są wykonywane wewnątrz puli wątków i następnie, podobnie jak obsługa sygnałów, przekazują wynik swojej pracy z powrotem przez nieoznaczoną rurę (pipe). Wykonywanie kodu JavaScript zapewnione jest przez wykorzystanie zaprojektowanego przez Google silnika V8 (dodatkowo Microsoft rozwija wersję Node.js z silnikiem Chakra-Core).

Zasadniczo Node.js przypomina frameworki Perl AnyEvent, Ruby Event Machine, Python Twisted i wdrożenie zdarzeń w Tcl, ale pętla przetwarzania zdarzeń (event loop) w Node.js jest ukryta przed programistą i przypomina przetwarzanie zdarzeń w aplikacji webowej działającej w przeglądarce. Podczas pisania aplikacji dla Node.js należy uwzględnić specyfikę programowania opartego na zdarzeniach, na przykład, zamiast wykonywania „var result = db.query(„select..”);” z oczekiwaniem na zakończenie pracy i późniejszą obsługą wyników, w Node.js stosuje się zasadę asynchronicznego wykonania, tj. kod przekształca się w „db.query(„select..”, function (result) {obsługa wyniku});”, przy czym kontrola natychmiast przechodzi do dalszego kodu, a wynik zapytania jest obsługiwany w miarę przybywania danych.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster