ËshtĂ« publikuar platforma Node.js 23.0 me mbĂ«shtetje fillestare pĂ«r gjuhĂ«n TypeScript

Lëshohet Node.js 23.0.0, një platformë për ekzekutimin e aplikacioneve rrjetore në gjuhën JavaScript. Node.js 23.0 është klasifikuar si një degë ndërmjetëse, mbështetje për të cilën jepet për një periudhë prej 7 muajsh (deri në qershor 2025). Në ditët në vijim, do të përfundojë stabilizimi i degës Node.js 22, e cila më 29 tetor do të marrë statusin LTS dhe do të mbështetet deri në prill 2027. Mbështetja për degët e kaluara LTS të Node.js 20.x dhe 18.x do të vazhdojë deri në prill 2026 dhe 2025 përkatësisht.

Përmirësimet kryesore:

  • Shtohet mbĂ«shtetje eksperimentale pĂ«r gjuhĂ«n TypeScript, e cila lejon pĂ«rcaktimin e qartĂ« tĂ« tipeve. MbĂ«shtetja aktivizohet me opsionet «—experimental-strip-types» dhe «—experimental-transform-types». Me opsionin e parĂ«, puna me TypeScript pĂ«rfshin thjesht pastrimin e pĂ«rcaktimeve tĂ« tipeve specifike pĂ«r kĂ«tĂ« gjuhĂ« (nuk kryhet kontrolli i tipeve, kodi thjesht transformohet nĂ« JavaScript pa tipe). Opsioni i dytĂ« transformon disa elementĂ« tĂ« sintaksĂ«s TypeScript nĂ« kodin JavaScript, si pĂ«r shembull enumeratat (enum) dhe hapĂ«sirat emĂ«rore (namespace).
  • Aktivizohet nga e para mundĂ«sia pĂ«r tĂ« pĂ«rdorur thirrjen «require()» pĂ«r ngarkimin e moduleve JavaScript ESM (ECMAScript Modules) nĂ« mĂ«nyrĂ« sinkrone. Module ESM tĂ« pĂ«rdorura nĂ« shfletues dhe zĂ«vendĂ«sojnĂ« modulet CommonJS, specifike pĂ«r Node.js. PĂ«r t'u ngarkuar pĂ«rmes «require()» nĂ« Node.js, moduli ESM duhet tĂ« ekzekutohet nĂ« mĂ«nyrĂ« sinkrone (pa await nĂ« nivelin e lartĂ«).
  • Sigurohet identifikimi automatik i moduleve ESM nĂ« skedarĂ«t pa zgjerim ose me zgjerimin «.js». MĂ« parĂ«, kĂ«ta skedarĂ« interpretoheshin si module CommonJS nĂ«se nĂ« skedarin package.json nĂ« tĂ« njĂ«jtin katalog nuk ishte caktuar qartĂ« tipi i tyre («type»: «module»). NĂ« versionin e ri, pĂ«r skedarĂ«t, tipi i tĂ« cilĂ«ve nuk Ă«shtĂ« caktuar nĂ« package.json, nĂ« fillim kryhet njĂ« pĂ«rpjekje pĂ«r t'u ngarkuar si modul CommonJS, dhe nĂ«se kjo dĂ«shton, atĂ«herĂ« si modul ESM.
  • Implementim eksperimental i shtuar i pĂ«rputhshĂ«m me shfletuesit API Web Storage, i destinuar pĂ«r ruajtjen e pĂ«rhershme (klasa localStorage) ose tĂ« pĂ«rkohshme (klasa sessionStorage) tĂ« tĂ« dhĂ«nave nĂ« formatin çelĂ«s/vlerĂ«. PĂ«r tĂ« aktivizuar mbĂ«shtetje pĂ«r Web Storage, nevojitet ekzekutimi me flagun «—experimental-webstorage» dhe caktimi i rrugĂ«s pĂ«r skedarin e ruajtjes pĂ«rmes flagut «—localstorage-file».
  • ËshtĂ« shtuar njĂ« API eksperimental SQLite pĂ«r tĂ« punuar me bazat e tĂ« dhĂ«nave, duke pĂ«rdorur gjuhĂ«n e pyetjeve SQL dhe ruajtjen nĂ« bazĂ« tĂ« bibliotekĂ«s SQLite. PĂ«rveç ruajtjes sĂ« bazĂ«s sĂ« tĂ« dhĂ«nave nĂ« njĂ« skedar nĂ« disk, ajo gjithashtu mund tĂ« vendoset nĂ« memorie, duke specifikuar nĂ« vend tĂ« emrit tĂ« skedarit ":memory:". API e lartpĂ«rmendur e Web Storage Ă«shtĂ« implementuar gjithashtu mbi SQLite, e cila ka sjellĂ« shtimin e SQLite nĂ« numrin e varĂ«sive pĂ«r Node.js.
  • ËshtĂ« shpallur ekipi stabil "node --run", i destinuar pĂ«r tĂ« ekzekutuar skriptet e pĂ«rcaktuara nĂ« skedarin package.json.
  • ËshtĂ« realizuar mbĂ«shtetje opsionale pĂ«r ruajtjen e kodit tĂ« kompiluar nĂ« disk pĂ«r tĂ« pĂ«rshpejtuar ndjeshĂ«m ekzekutimin e moduleve. Aktivizimi i ruajtjes bĂ«het nĂ«pĂ«rmjet variablĂ«s sĂ« ambientit NODE_COMPILE_CACHE. QĂ«llimi i kĂ«saj funksionaliteti Ă«shtĂ« i ngjashĂ«m me paketĂ«n v8-compile-cache, por dallohet pĂ«r performancĂ« mĂ« tĂ« lartĂ« dhe mbĂ«shtetje pĂ«r modulat ESM.
  • ËshtĂ« optimizuar objekti Buffer, i cili ka lejuar njĂ« rritje tĂ« konsiderueshme tĂ« performancĂ«s sĂ« metodave Buffer.copy() dhe Buffer.write().
  • ËshtĂ« rritur performanca e modulit node:fs, nĂ« tĂ« cilin gjithashtu Ă«shtĂ« reduktuar numri i thirrjeve nĂ« kodin C++ gjatĂ« funksionimit.
  • Motori V8 Ă«shtĂ« azhurnuar nĂ« versionin 12.9, i pĂ«rdorur nĂ« Chromium 129.
  • ËshtĂ« hequr mbĂ«shtetja pĂ«r sistemet 32-bit me sistemin operativ Windows.
  • PĂ«r shkak tĂ« implementimit tĂ« mundĂ«sive nĂ« Node.js dhe motorin V8, tĂ« pĂ«rcaktuara nĂ« standardin C++20, janĂ« rritur kĂ«rkesat pĂ«r versionin e kompilatorit GCC. PĂ«r ndĂ«rtimin e Node.js tani kĂ«rkohet tĂ« paktĂ«n versioni 12 i GCC.

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