JavaScript platforma Node.js 22.0.0 është në dispozicion.

U lançua Node.js 22.0, një platformë për ekzekutimin e aplikacioneve rrjetore në gjuhën JavaScript. Node.js 22.0 i është përkushtuar degëve me mbështetje afatgjatë, por ky status do të jepet vetëm në tetor, pas stabilizimin. Mbështetja për Node.js 22.x do të vazhdojë deri më 30 prill 2027. Mbështetja për degën e kaluar LTS Node.js 20.x do të zgjasë deri në prill 2026, ndërsa për degën e mëparshme LTS 18.x deri në prill 2025. Mbështetja për degën ndërmjetëse Node.js 21.x do të ndërpritet më 1 qershor 2024.

Përmirësimet kryesore:

  • Motori V8 Ă«shtĂ« pĂ«rditĂ«suar nĂ« versionin 12.4, i pĂ«rdorur nĂ« Chromium 124. Ndryshimet krahasuar me degĂ«n Node.js 21, e cila pĂ«rdorte motorin V8 11.8, pĂ«rfshijnĂ«:
    • MbĂ«shtetje pĂ«r shtesĂ«n WasmGC, e cila thjeshtĂ«son portimin nĂ« WebAssembly tĂ« programeve tĂ« shkruara nĂ« gjuhĂ«t e programimit qĂ« pĂ«rdorin mbledhĂ«sin e mbetjeve (Kotlin, PHP, Java, etj.). WasmGC shton lloje tĂ« reja strukturash dhe vargjesh, pĂ«r tĂ« cilat mund tĂ« aplikohet ndarje jo lineare e kujtesĂ«s.
    • MbĂ«shtetje pĂ«r metodĂ«n Array.fromAsync(), e cila nĂ« mĂ«nyrĂ« asinkrone kthen njĂ« instancĂ« tĂ« re tĂ« objektit Array, e cila Ă«shtĂ« kopjuar nga objektet qĂ« ngjajnĂ« me vargjet, tĂ« cilat janĂ« enumeruese (iterable) ose enumeruese asinkrone (async iterable).
    • MbĂ«shtetje pĂ«r metodat pĂ«r punĂ«n me iteratorĂ«, si .map, .filter, .find, .take, .drop, .forEach dhe .reduce.
    • MbĂ«shtetje pĂ«r objektin Set, i cili pĂ«rkufizon njĂ« koleksion vlerash dhe ofron metoda me realizimin e operacioneve tipike tĂ« punĂ«s me grupe, si ndĂ«rprerjet, bashkimeve, diferencave dhe plotĂ«simeve.
  • E pĂ«rfshirĂ« si parazgjedhje kompajleri optimizues JIT i quajtur Maglev, i cili fokusohet nĂ« gjenerimin e shpejtĂ« tĂ« kodit maqinar me performancĂ« tĂ« lartĂ« pĂ«r kodin e pĂ«rdorur aktivisht nĂ« JavaScript. Aktivizimi i Maglev lejon tĂ« pĂ«rshpejtohet ndjeshĂ«m puna e aplikacioneve CLI me jetĂ« tĂ« shkurtĂ«r, qĂ« nuk kryejnĂ« operacione tĂ« gjata, pĂ«r shembull, koha e kalimit tĂ« testit Jetstream zvogĂ«lohet me 7.5%, ndĂ«rsa testi Speedometer me 5%.
  • Puna me rrjedhat Ă«shtĂ« pĂ«rshpejtuar pĂ«rmes rritjes sĂ« vlerĂ«s sĂ« opsionit highWaterMark nga 16 KB nĂ« 65 KB (pĂ«rcakton kufirin deri ku bĂ«het tamponimi i shkrimit). Ky ndryshim çon nĂ« rritjen e konsumit tĂ« memories, kĂ«shtu qĂ« aplikacionet qĂ« janĂ« projektuar tĂ« punojnĂ« me njĂ« volum tĂ« kufizuar RAM mund t'i duhet tĂ« kthejnĂ« vlerĂ«n e vjetĂ«r pĂ«rmes thirrjes setDefaultHighWaterMark().
  • PĂ«rmirĂ«simi i performancĂ«s sĂ« API-t fetch() dhe test runner-it pĂ«r shkak tĂ« rritjes sĂ« efikasitetit nĂ« krijimin e instancave tĂ« AbortSignal. PĂ«rmirĂ«suar performanca e API-ve qĂ« lidhen me punĂ«n sinkrone me sistemet e skedarĂ«ve.
  • Ofrimi i mundĂ«sisĂ« eksperimentale pĂ«r pĂ«rdorimin e thirrjes "require()" pĂ«r ngarkimin e moduleve JavaScript ESM (ECMAScript Modules) nĂ« modin sinkron. ModulĂ«t ESM pĂ«rdoren nĂ« shfletues dhe zĂ«vendĂ«sojnĂ« modulet CommonJS, specifike pĂ«r Node.js. PĂ«r tĂ« ngarkuar pĂ«rmes "require()", moduli ESM duhet tĂ« ekzekutohet nĂ« modin sinkron (pa await nĂ« nivelin mĂ« tĂ« lartĂ«). MbĂ«shtetjeja aktivizohet pĂ«rmes flagut "--experimental-require-module".
  • Shtuar mundĂ«sinĂ« eksperimentale pĂ«r ekzekutimin e skripteve tĂ« pĂ«rcaktuara nĂ« skedarin package.json, duke pĂ«rdorur komandĂ«n "--run ".
  • Komanda "node --watch" Ă«shtĂ« marrĂ« nĂ« kategori tĂ« stabilizuar me implementimin e modit tĂ« vĂ«zhgimit, qĂ« mundĂ«son rinisjen e procesit kur skedari i importuar ndryshon (pĂ«r shembull, duke ekzekutuar "node --watch index.js", procesi do tĂ« riniset automatikisht kur ndryshohet index.js).
  • Stabilizimi i implementimit tĂ« brendshĂ«m tĂ« API-t WebSocket, qĂ« mundĂ«son pĂ«rdorimin e WebSocket-it nĂ« modin klient pa instaluar varĂ«si tĂ« tjera.
  • Shtuar mbĂ«shtetje tĂ« pjesshme pĂ«r API-nĂ« Navigator.
  • NĂ« API-nĂ« Webstreams, Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r formatin e kompresimit deflate-raw.
  • NĂ« modulĂ«n node:fsmodule janĂ« shtuar funksionet glob dhe globSync pĂ«r pĂ«rputhjen e rrugĂ«ve tĂ« skedarĂ«ve sipas njĂ« shembulli.
  • PĂ«rmirĂ«suar pĂ«rpunimi i stack-eve IPv6 tĂ« konfiguruara keq. Implementuar algoritmi Happy Eyeballs pĂ«r rishikimin e shpejtĂ« nĂ« rast problemeve me IPv6.
  • API util Ă«shtĂ« shpallur i deprecated.
  • Versionet e varĂ«sive janĂ« pĂ«rditĂ«suar: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson nĂ« 3.8.0, ada 2.7.7 dhe undici 6.6.0.

Platforma Node.js mund të përdoret për mbështetje serverike të funksionimit të aplikacioneve Web, si dhe për krijimin e aplikacioneve të zakonshme klient-server. Për të zgjeruar funksionalitetin e aplikacioneve për Node.js, është përgatitur një koleksion i madh modulash, ku mund të gjenden module me implementime serverësh dhe klientë HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrimin me framework-e të ndryshme web, trajtues të WebSocket dhe Ajax, lidhës për DB (MySQL, PostgreSQL, SQLite, MongoDB), motorë të templativëve, engine CSS, implementime të algoritmeve kriptografikë dhe sisteme autorizimi (OAuth), parserë XML.

Për të siguruar përpunimin e një numri të madh të kërkesave paralele, Node.js përdor një model të asinxhëm të ekzekutimit të kodit, të bazuar në përpunimin e ngjarjeve në modalitet jo bllokues dhe definimin e trajtuesve të callback. Metodat si epoll, kqueue, /dev/poll dhe select mbështeten si mënyra për të bërë shumëfishimin e lidhjeve. Biblioteka libuv përdoret për shumëfishimin e lidhjeve, e cila është një shtresë mbi libev në sistemet Unix dhe mbi IOCP në Windows. Për të krijuar një rezervë të vijave të ekzekutimit (thread pool), përdoret biblioteka libeio, ndërsa për kryerjen e kërkesave DNS në modalitet jo bllokues integrohet c-ares. Të gjitha thirrjet në sistem që shkaktojnë bllokim kryhen brenda rezervës dhe më pas, si dhe trajtuesit e sinjaleve, kalojnë rezultatin e punës së tyre përsëri përmes një kanali të paemëruar (pipe).

Ekzekutimi i kodit JavaScript sigurohet përmes përdorimit të motorit V8 të zhvilluar nga kompania Google (për më tepër, Microsoft zhvillon një variant të Node.js me motorin Chakra-Core). Në thelb, Node.js është i ngjashëm me framework-et Perl AnyEvent, Ruby Event Machine, Python Twisted dhe implementimin e ngjarjeve në Tcl, por cikli i përpunimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe i ngjan përpunimit të ngjarjeve në një aplikacion web që punon në shfletues.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster