Node.js 23.0 հարթակը հրապարակվել է TypeScript լեզվի նախնական աջակցությամբ

Թողարկվել է Node.js 23.0.0-ը՝ JavaScript-ով ցանցային հավելվածների գործարկման հարթակ: Node.js 23.0-ը դասակարգվում է որպես միջանկյալ մասնաճյուղ, որը կաջակցվի 7 ամիս (մինչև 2025թ. հունիսը): Առաջիկա օրերին կավարտվի Node.js 22 մասնաճյուղի կայունացումը, որը հոկտեմբերի 29-ին կստանա LTS կարգավիճակ և կաջակցվի մինչև 2027 թվականի ապրիլ։ Node.js 20.x և 18.x նախկին LTS մասնաճյուղերի աջակցությունը կշարունակվի համապատասխանաբար մինչև 2026 և 2025 թվականների ապրիլը:

Հիմնական բարելավումներ.

  • Ավելացվեց TypeScript-ի փորձնական աջակցություն, որը թույլ է տալիս հստակ տիպի սահմանումներ: Աջակցությունը միացված է «--experimental-strip-types» և «--experimental-transform-types» տարբերակների միջոցով: Առաջին տարբերակի դեպքում TypeScript-ի հետ աշխատելը կրճատվում է լեզվին հատուկ տեսակի սահմանումների մաքրմամբ (տեսակի ստուգում չի կատարվում, կոդը պարզապես փոխակերպվում է անտիպ JavaScript-ի): Երկրորդ տարբերակը փոխակերպում է TypeScript-ի որոշ շարահյուսական տարրեր, ինչպիսիք են թվերը և անունների տարածքները, JavaScript կոդի:
  • Լռելյայն միացված է «require()» զանգը օգտագործելու հնարավորությունը՝ JavaScript ESM մոդուլները (ECMAScript մոդուլներ) համաժամանակյա ռեժիմում բեռնելու համար: ESM մոդուլներն օգտագործվում են բրաուզերներում և փոխարինում են Node.js-ին հատուկ CommonJS մոդուլներին: Node.js-ում «require()»-ի միջոցով բեռնելու համար ESM մոդուլը պետք է կատարվի համաժամանակյա (առանց վերին մակարդակում սպասելու):
  • Տրամադրվում է ESM մոդուլների ավտոմատ հայտնաբերում «.js» ընդլայնմամբ ֆայլերում: Նախկինում նման ֆայլերը դիտվում էին որպես CommonJS մոդուլներ, եթե դրանց տեսակը հստակորեն նշված չէր նույն գրացուցակում գտնվող package.json ֆայլում («տեսակ». «մոդուլ»): Նոր տարբերակում այն ​​ֆայլերի համար, որոնց տեսակը նշված չէ package.json-ում, այն նախ փորձում է բեռնել որպես CommonJS մոդուլ, իսկ եթե դա չհաջողվի, ապա որպես ESM մոդուլ։
  • Ավելացվեց փորձարարական իրականացում համատեղելի է զննարկիչների հետ Web Storage API-ը նախատեսված է բանալիի/արժեքի տվյալների մշտական ​​(localStorage դաս) կամ ժամանակավոր (sessionStorage դաս) պահպանման համար: Web Storage-ի աջակցությունը միացնելու համար անհրաժեշտ է API-ը գործարկել "--experimental-webstorage" դրոշակով և նշել պահեստային ֆայլի ուղին՝ օգտագործելով "--localstorage-file" դրոշակը:
  • Ավելացվեց փորձնական SQLite API՝ տվյալների բազաների հետ աշխատելու համար՝ օգտագործելով SQL հարցումների լեզուն և պահեստավորումը՝ հիմնված SQLite գրադարանի վրա: Տվյալների բազան սկավառակի վրա ֆայլում պահելուց բացի, այն կարող է տեղադրվել նաև հիշողության մեջ՝ ֆայլի անվան փոխարեն նշելով «:memory:»: Վերոհիշյալ Web Storage API-ն իրականացվում է նաև SQLite-ի վերևում, ինչի արդյունքում SQLite-ն ավելացվում է որպես Node.js-ի կախվածություն:
  • «Node —run» հրամանը հայտարարվել է կայուն, որը նախատեսված է package.json ֆայլում սահմանված սկրիպտները գործարկելու համար։
  • Իրականացվել է կամընտիր աջակցություն սկավառակի վրա կազմված կոդի քեշավորման համար՝ մոդուլների գործարկումը զգալիորեն արագացնելու համար: Քեշավորումը միացված է NODE_COMPILE_CACHE միջավայրի փոփոխականի միջոցով: Իր նպատակի առումով գործառույթը նման է v8-compile-cache փաթեթին, սակայն տարբերվում է ավելի բարձր կատարողականությամբ և ESM մոդուլների աջակցությամբ:
  • Buffer օբյեկտը օպտիմիզացվել է Buffer.copy() և Buffer.write() մեթոդների արդյունավետությունը զգալիորեն բարձրացնելու համար:
  • Բարելավվել է node:fs մոդուլի աշխատանքը, ինչը նաև նվազեցնում է C++ կոդի զանգերի քանակը շահագործման ընթացքում։
  • V8 շարժիչը թարմացվել է 12.9 տարբերակով, որն օգտագործվում է Chromium 129-ում:
  • 32-բիթանոց Windows համակարգերի աջակցությունը հանվել է:
  • Node.js-ում և V8 շարժիչում C++20 ստանդարտով սահմանված հատկանիշների ներդրման շնորհիվ ավելացվել են GCC կոմպիլյատորի տարբերակի պահանջները։ Building Node.js-ն այժմ պահանջում է առնվազն GCC 12:

Node.js հարթակը կարող է օգտագործվել ինչպես վեբ հավելվածների սերվերային աջակցության, այնպես էլ ստանդարտ հաճախորդային և սերվերային ցանցային ծրագրեր ստեղծելու համար: Node.js հավելվածների ֆունկցիոնալությունը ընդլայնելու համար պատրաստվել է մոդուլների մեծ հավաքածու, այդ թվում՝ մոդուլներ իրականացնողները: սերվերներ և HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 հաճախորդների համար, տարբեր վեբ շրջանակների հետ ինտեգրման մոդուլներ, WebSocket և Ajax մշակիչներ, տվյալների բազայի կառավարման համակարգերի (MySQL, PostgreSQL, SQLite, MongoDB) միակցիչներ, ձևանմուշային շարժիչներ, CSS շարժիչներ, կրիպտոգրաֆիկ ալգորիթմների և լիազորման համակարգերի (OAuth) իրականացումներ, XML վերլուծիչներ։

Զուգահեռաբար մեծ թվով հարցումներ կարգավորելու համար Node.js-ն օգտագործում է կոդի կատարման ասինխրոն մոդել, որը հիմնված է իրադարձությունների չարգելափակման մշակման և հետադարձ զանգի մշակիչների սահմանման վրա: Միացումների մուլտիպլեքսավորման աջակցվող մեթոդները ներառում են epoll, kqueue, /dev/poll և select: Կապի մուլտիպլեքսավորման համար օգտագործվում է libuv գրադարանը, որը հավելում է libev-ին Unix համակարգերում և IOCP-ին Windows-ում: Libeio գրադարանն օգտագործվում է թելերի լողավազան ստեղծելու համար, իսկ c-ares-ը ինտեգրված է DNS հարցումները ոչ արգելափակող ռեժիմում կատարելու համար: Բոլոր համակարգային զանգերը, որոնք առաջացնում են արգելափակում, կատարվում են թելերի լողավազանի ներսում, այնուհետև, ազդանշանի մշակողների նման, իրենց աշխատանքի արդյունքը հետ են փոխանցում անանուն խողովակի միջով:

JavaScript կոդի կատարումն ապահովվում է Google-ի կողմից մշակված V8 շարժիչի օգտագործման միջոցով (ի լրումն, Microsoft-ը մշակում է Node.js-ի տարբերակը Chakra-Core շարժիչով): Node.js-ն իր հիմքում նման է Perl AnyEvent, Ruby Event Machine, Python Twisted շրջանակներին և իրադարձությունների իրականացմանը Tcl-ում, սակայն Node.js-ում իրադարձությունների հանգույցը թաքնված է մշակողից և հիշեցնում է իրադարձությունների մշակումը վեբ հավելվածում: աշխատում է բրաուզերում:

Source: opennet.ru

Добавить комментарий