Objavljeno je Node.js 16.0, platforma za izvođenje mrežnih aplikacija na jeziku JavaScript. Node.js 16.0 pripada grani dugoročne podrške, no ovaj status će biti dodijeljen tek u listopadu, nakon stabilizacije. Podrška za Node.js 16.0 trajat će do travnja 2023. godine. Održavanje prethodne LTS grane Node.js 14.0 trajat će do travnja 2023. godine, a starije LTS grane 12.0 do travnja 2022. godine. Održavanje LTS grane 10.0 bit će prekinuto za 10 dana.
Glavna poboljšanja:
- Motor V8 ažuriran je na verziju 9.0 (u Node.js 15 korišteno je izdanje 8.6), što je omogućilo implementaciju u Node.js 16 takvih funkcionalnosti kao što su svojstvo 'indices' za regularne izraze (uključuje niz s početnim i završnim pozicijama grupa podudaranja), metoda Atomics.waitAsync (asarhiona verzija Atomics.wait), te podrška za korištenje ključne riječi await na vrhu modula. Pozivanje funkcija ubrzano je kada broj proslijeđenih argumenata ne odgovara parametrima definiranim u funkciji.
- Stabiliziran je API Timers Promises, koji nudi alternativni set funkcija za rad s vremenom, vraćajući Promise objekte, što omogućuje izbjegavanje korištenja util.promisify(). import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } run();
- Dodana je eksperimentalna implementacija API Web Crypto, namijenjena izvođenju osnovnih kriptografskih operacija na strani web aplikacija, kao što su manipulacije s kriptografskim haševima, generiranje i provjera digitalnih potpisa, kodiranje i dekodiranje podataka koristeći različite metode šifriranja, te generiranje kriptografski sigurnih slučajnih brojeva. API također sadrži funkcije za generiranje i upravljanje ključevima.
- N-API (API za razvoj dodataka) ažuriran je na verziju 8.
- Provedena je migracija na novo izdanje upravitelja paketa NPM 7.10.
- Stabilizirana je implementacija klase AbortController, koja se temelji na Web API AbortController i omogućuje otkazivanje signala u odabranim API-ima temeljenim na Promise.
- Stabilizirana je podrška za treću verziju formata Source Map, koji se koristi za mapiranje generiranih, obrađenih ili pakiranih modula na izvorni kod.
- Za kompatibilnost sa zastarjelim Web API-ima dodane su metode buffer.atob(data) i buffer.btoa(data).
- Započelo je formiranje izdanja za nove Apple uređaje opremljene ARM čipom M1.
- Na Linux platformi, zahtjevi za verziju kompajlera podignuti su na GCC 8.3.
Podsjetimo, platforma Node.js može se koristiti za serversko održavanje web aplikacija, kao i za izradu običnih klijentskih i serverskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js pripremljena je velika kolekcija modula, u kojoj se mogu naći moduli s implementacijom. 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 osiguranje obrade velikog broja paralelnih zahtjeva, Node.js koristi asinkroni model pokretanja koda, koji se temelji na obradi događaja u neblokirajućem modu i definiranju callback handlera. Kao metode multiplexiranja veza podržavaju se različite metode poput epoll, kqueue, /dev/poll i select. Za multiplexiranje veza koristi se knjižnica libuv, koja je nadogradnja na libev u Unix sustavima i na IOCP u Windowsu. Za izradu skupa niti (thread pool) koristi se knjižnica libeio, a za izvršavanje DNS upita u neblokirajućem modu integriran je c-ares. Svi sustavni pozivi koji uzrokuju blokiranje izvode se unutar skupa niti i zatim, kao i handleri signala, vraćaju rezultat svog rada putem anonimnog kanala (pipe). Izvršavanje JavaScript koda osigurava se korištenjem motora V8 razvijenog od strane kompanije Google (dodatno, Microsoft razvija varijantu Node.js s motorom Chakra-Core).
Node.js je po svojoj suštini sličan Perl AnyEvent, Ruby Event Machine, Python Twisted i implementaciji događaja u Tkl-u, ali je ciklus obrade događaja (event loop) u Node.js skriven od programera i podseća na obradu događaja u web-aplikaciji koja radi u pretraživaču. Kada pišete aplikacije za Node.js, morate uzeti u obzir specifičnosti programiranja usmjerenog na događaje; na primer, umesto izvršavanja „var result = db.query(„select..“);“ uz čekanje na završetak rada i kasniju obradu rezultata, Node.js koristi princip asinhronog izvršavanja, tj. kod se transformiše u „db.query(„select..“, function (result) {obrada rezultata});“, pri čemu će kontrola odmah preći na dalji kod, a rezultat upita će se obraditi kako podaci pristižu.
Dodatno, vrijedi napomenuti da je tvrtka Deno, koju je osnovao kreator Node.js za razvoj nove generacije platforme Deno, primila 4,9 milijuna dolara investicija. Po svom odredištu, Deno nalikuje Node.js, ali nastoji ispraviti konceptualne greške u arhitekturi Node.js i pružiti korisnicima sigurnije okruženje. Ističe se da će poslovna rješenja kompanije Deno biti izgrađena na potpuno otvorenim proizvodima, dok se model Open Core s izdvanjem zasebnih plaćenih funkcionalnosti doživljava kao neprihvatljiv za Deno platformu.
Izvor: opennet.ru
