Node.js 25.0.0 har blitt lansert, en plattform for kjøring av nettapplikasjoner skrevet i JavaScript. Node.js 25.0 tilhører mellomliggende grener, som vil bli vedlikeholdt i 7 måneder (til juni 2026). I de kommende dagene vil stabiliseringen av Node.js 24 bli fullført, som i slutten av oktober vil få status som LTS og vil bli støttet til april 2028. Støtten for tidligere LTS-grener Node.js 22.x og 20.x vil vare til henholdsvis april 2027 og 2026.
Hovedforbedringer:
- V8-motoren er oppdatert til versjon 14.1, som brukes i Chromium 141. Blant forbedringene i forhold til forrige utgave av Node.js er det betydelige ytelsesforbedringer i JSON.stringify-metoden, optimalisering av WebAssembly og JIT, samt implementering av metoder for konvertering mellom Uint8Array og data i base64 eller heksadesimal representasjon.
- Det er lagt til en opsjon «—allow-net» i Permission Model, som lar deg begrense tilgangen til visse ressurser under kjøring for å gi nettverksadgang (hvis opsjonen «—allow-net» ikke er angitt, vil start av Node.js i «—permission»-modus gi en ERR_ACCESS_DENIED-feilmelding ved forsøk på nettverksoperasjoner).
- Aktivert som standard kompatibel med nettlesere Web Storage API, designet for permanent (localStorage-klasse) eller midlertidig (sessionStorage-klasse) lagring av data i nøkkel/verdi-format. Den eksperimentelle etiketten for Web Storage API er fjernet.
- Klassen ErrorEvent er blitt flyttet til kategorien globalt tilgjengelig (kan brukes uten eksplisitt import), og gir et nettleserkompatibelt grensesnitt for behandling av hendelser med feilinformasjon.
- For WebAssembly er det lagt til støtte for API JSPI (JavaScript Promise Integration), som gjør det mulig å aksessere asynkrone Web API fra sekvensielt utført kode kompilert til WebAssembly.
- Det er lagt til en opsjon «NODE_COMPILE_CACHE_RELATIVE_PATH» for bærbar arbeid med cache for kompilert objekter. I denne modusen kalkuleres hasher for identifisering av objekter ved hjelp av relative filbaner, noe som gjør det mulig å flytte og integrere innholdet i katalogen med koden sammen med cachen.
- Det er lagt til mulighet for CPU-belastningsprofilering.
- Pakkebehandling NPM er oppdatert til versjon 11.6.2.
- Støtte for Python 3.14 er lagt til.
- De minimal støttede versjonene er erklært som Clang 19 og Xcode 16.4.
- Støtten for objektet SlowBuffer er blitt avsluttet, tidligere erklært avleggs på grunn av potensielle sikkerhetsproblemer. Bruk metoden Buffer.allocUnsafeSlow() i stedet for SlowBuffer.
Node.js-plattformen kan brukes både for serveradministrasjon av webapplikasjoner og for å lage vanlige klient- og serverside nettverksprogrammer. For å utvide funksjonaliteten til applikasjoner for Node.js er det utarbeidet en stor samling av moduler, der du kan finne moduler med implementasjoner servere og klienter for HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler for integrasjon med ulike web-rammeverk, håndterere for WebSocket og Ajax, forbindelser til DBMS (MySQL, PostgreSQL, SQLite, MongoDB), malmotorer, CSS-motorer, implementasjoner av kryptografiske algoritmer og autorisasjonssystemer (OAuth), XML-parsere.
For processing a large number of parallel requests, Node.js utilizes an asynchronous model of code execution based on event-driven non-blocking I/O and the definition of callback handlers. Methods such as epoll, kqueue, /dev/poll, and select are supported for connection multiplexing. The libuv library, which builds on libev in Unix systems and IOCP in Windows, is used for connection multiplexing. A thread pool is created using the libeio library, and non-blocking DNS requests are integrated with c-ares. All system calls that cause blocking are executed within the thread pool and then return their results via an unnamed pipe, just like signal handlers.
Utføringen av JavaScript-kode skjer gjennom bruk av V8-motoren utviklet av Google (i tillegg utvikler Microsoft en versjon av Node.js med Chakra-Core-motoren). I sin kjerne er Node.js lik rammeverkene Perl AnyEvent, Ruby Event Machine, Python Twisted og hendelsesimplementeringen i Tcl, men hendelsesbehandlingssløyfen (event loop) i Node.js er skjult for utvikleren og ligner på hendelsesbehandling i et webapplikasjon som kjører i en nettleser.
Kilde: opennet.ru
