Node.js 15.1.0 – pierwsza aktualizacja stabilnego wydania
Zaledwie tydzień temu zespół pracujący nad Node.js wydał stabilną, główną wersję – Node.js 15.0. Dzisiaj opublikowano pierwszą aktualizację tego środowiska. Node.js 15.1.0 posiada przede wszystkim eksperymentalny kanał diagnostyczny oraz kontrolę zasięgu V8.
Kanał diagnostyczny w Node.js 15.1.0
Jedną z pierwszych zmian w tej wersji jest eksperymentalny moduł diagnostics_channel. Udostępnia on interfejs API do tworzenia nazwanych kanałów, aby raportować dowolne dane wiadomości dla celów diagnostycznych. Pozwoli to autorom rdzenia i modułów na publikowanie danych o aktualnych pracach. Aby wysłać dane do użytkowników tego kanału, wystarczy stworzyć nazwany kanał i wywołać channel.publish(data).
const dc = require('diagnostics_channel'); const channel = dc.channel('mysql.query'); MySQL.prototype.query = function query(queryString, values, callback) { // Broadcast query information whenever a query is made channel.publish({ query: queryString, host: this.hostname, }); this.doQuery(queryString, values, callback); };
W celu zapewnienia lepszej wydajności kanały podzielone są na oddzielne obiekty. Ponadto przechwycone dane służą do określenia kontekstu tego, co aplikacja robi w danym momencie oraz stanowią narzędzie diagnostyczne. Otrzymuje się wtedy lepszy obraz działania aplikacji w momencie prezentowania danych.
Nowe zdarzenie ‘spawn’
W Node.js 15.1.0 emitowane jest teraz nowe zdarzenie ‘spawn’ przez instancje ChildProcess. Emituje się ono, gdy proces potomny zostanie pomyślnie uruchomiony. ‘Spawn’ występuje przed innymi zdarzeniami i przed otrzymaniem danych za pośrednictwem stdout lub stderr.
Kontrola V8 w Node.js 15.1.0
Do modułu V8 dodano dwie metody kontrolowania zakresu V8. Metoda v8.takeCoverage() pozwala na zapisanie raportu pokrycia na dysku na żądanie, wiele razy podczas trwania procesu. Co ważne, licznik wykonania będzie resetowany przy każdym wywołaniu. Drugą metodą jest v8.stopCoverage(), która zatrzymuje kolekcję pokrycia. W ten sposób zwalnia liczniki oraz optymalizuje kod.
W fazie eksperymentalnej znajduje się także opcja robienia migawki sterty V8 tuż przed wyczerpaniem pamięci. Nowa flaga –heapsnapshot-near-heap-limit=max_count generuje migawkę, jeśli użycie sterty V8 zbliża się do limitu.
Inne zmiany
Ostatnimi zmianami jest instancja Worker, a także lokalny adres do rozpoznawania nazw DNS. Instancja Worker otrzymała teraz nową właściwość performance, z metodą eventLoopUtilization. Działa ona tak samo jak perf_hooks eventLoopUtilization(). Korzysta się z niej m.in. do zebrania informacji o wykorzystaniu pętli zdarzeń roboczych między zdarzeniami ‘online’ i ‘exit’.
Kolejną zmianą jest ustawianie lokalnego adresu IP używanego przez Resolver do wysyłania żądań. Pozwala to programom na określanie wychodzących interfejsów w wieloadresowych systemach.
Źródło: Node.js Blog