Objavljen je Node.js 25.0.0, platforma za izvođenje mrežnih aplikacija napisanim u JavaScriptu. Node.js 25.0 svrstava se u intermedijarne grane, čija se podrška osigurava tijekom 7 mjeseci (do lipnja 2026. godine). U narednim danima, stabilizacija grane Node.js 24 će biti završena, koja će na kraju listopada dobiti LTS status i bit će podržana do travnja 2028. godine. Podrška za prethodne LTS grane Node.js 22.x i 20.x trajat će do travnja 2027. i 2026. godine, redom.
Glavna poboljšanja:
- V8 engine je ažuriran na verziju 14.1, korištenu u Chromiumu 141. Među poboljšanjima u odnosu na prethodnu verziju Node.js, istaknuto je značajno poboljšanje performansi metode JSON.stringify, optimizacija WebAssembly i JIT-a, kao i implementacija metoda za konverziju između Uint8Array i podataka u base64 ili heksadecimalnom obliku.
- U mehanizam Permission Model, koji omogućava ograničavanje pristupa određenim resursima tijekom izvršavanja, dodana je opcija „—allow-net” za osiguranje mrežnog pristupa (ako opcija „—allow-net” nije definirana, pokretanje Node.js u režimu „—permission” će izazvati grešku ERR_ACCESS_DENIED prilikom pokušaja izvođenja mrežnih operacija).
- Omogućeno prema zadanim postavkama kompatibilan s preglednicima API Web Storage, namijenjen za trajno (klasa localStorage) ili privremeno (klasa sessionStorage) pohranjivanje podataka u obliku ključ/vrijednost. Označavanje eksperimentalnog razvoja s API Web Storage je uklonjeno.
- Klasa ErrorEvent, koja nudi sučelje kompatibilno s preglednicima za obradu događaja s informacijama o greškama, prenesena je u kategoriju globalno dostupnih (može se koristiti bez eksplicitnog uvoza).
- Dodana je podrška za JSPI (JavaScript Promise Integration) API za WebAssembly, što omogućava pristup asinkronim Web API-ima iz sekvencijalno izvršenog koda, kompiliranog u WebAssembly.
- Dodana je opcija „NODE_COMPILE_CACHE_RELATIVE_PATH” za prenosivu rad s predmemorijom kompiliranih objekata. U ovom režimu, heširanja za identifikaciju objekata se izračunavaju korištenjem relativnih putanja do datoteka, što omogućava premještanje i ugrađivanje sadržaja direktorija s kodom zajedno s predmemorijom.
- Dodana je mogućnost profiliranja opterećenja CPU-a.
- Upravitelj paketa NPM ažuriran je na verziju 11.6.2.
- Dodana je podrška za Python 3.14.
- Kao minimalno podržane verzije navedeni su Clang 19 i Xcode 16.4.
- Podrška za objekt SlowBuffer je obustavljena, ranije je proglašen zastarjelim zbog potencijalnih sigurnosnih problema. Umjesto SlowBuffera treba koristiti metodu Buffer.allocUnsafeSlow().
Platforma Node.js može se koristiti kako za poslužiteljsko održavanje web aplikacija, tako i za izradu uobičajenih klijentskih i poslužiteljskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js pripremljena je velika kolekcija modula, u kojoj se mogu pronaći moduli s implementacijama poslužitelja i klijenata HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli za integraciju s raznim web okvirima, obrada WebSocket i Ajax, konektori za baze podataka (MySQL, PostgreSQL, SQLite, MongoDB), predlošci, CSS motori, implementacije kriptoalgoritama i sustava autentifikacije (OAuth), XML parseri.
Za obradu velikog broja paralelnih zahtjeva, Node.js koristi asinkroni model pokretanja koda, temeljen na obradi događaja u neblokirajućem režimu i definiranim callback-obradnicima. Kao metode multiplexiranja veza podržani su epoll, kqueue, /dev/poll i select. Za multiplexiranje veza koristi se knjižnica libuv, koja je nadogradnja na libev u Unix sustavima i IOCP u Windowsu. Za stvaranje skupa niti (thread pool) koristi se knjižnica libeio, dok je za izvršavanje DNS-zahtjeva u neblokirajućem režimu integrirana c-ares. Sve sistemske pozive koji izazivaju blokiranje izvršavaju unutar skupa niti, a zatim, baš kao i obrada signala, rezultat svog rada vraćaju kroz nenazvanu cijev (pipe).
Izvršavanje JavaScript koda osigurano je korištenjem V8 motora koji je razvila tvrtka Google (uz to, Microsoft razvija varijantu Node.js s motorom Chakra-Core). Suštinski, Node.js je sličan Perl AnyEvent, Ruby Event Machine, Python Twisted okvirima i implementaciji događaja u Tcl-u, ali je ciklus obrade događaja (event loop) u Node.js skriven od programera i podsjeća na obradu događaja u web-aplikaciji koja radi u pregledniku.
Izvor: opennet.ru
