Kutolewa kwa JavaScript Node.js 14.0 ya upande wa seva

ilifanyika kutolewa Node 14.0, majukwaa ya kuendesha programu za mtandao katika JavaScript. Node.js 14.0 ni tawi la usaidizi la muda mrefu, lakini hali hii itawekwa mnamo Oktoba pekee, baada ya uimarishaji. Node.js 14.0 itatumika ifanyike hadi Aprili 2023. Matengenezo ya tawi la awali la LTS la Node.js 12.0 itaendelea hadi Aprili 2022, na mwaka mmoja kabla ya tawi la mwisho la LTS 10.0 hadi Aprili 2021. Usaidizi wa tawi la 13.x utakamilika Juni mwaka huu.

kuu maboresho:

  • Uwezo wa kuzalisha kwa kuruka au juu ya kutokea kwa matukio fulani umeimarishwa ripoti za uchunguzi, ambayo huonyesha matukio ambayo husaidia kutambua matatizo kama vile kuacha kufanya kazi, uharibifu wa utendakazi, uvujaji wa kumbukumbu, mzigo mzito wa CPU, utoaji wa hitilafu usiyotarajiwa, n.k.
  • Imeongeza usaidizi wa majaribio wa API Async Hifadhi ya Ndani na utekelezaji wa darasa la AsyncLocalStorage, ambalo linaweza kutumika kuunda hali isiyolingana na vidhibiti kulingana na simu za kurudi nyuma na ahadi. AsyncLocalStorage hukuruhusu kuhifadhi data wakati ombi la wavuti linachakatwa, sawa na uhifadhi wa ndani wa mazungumzo katika lugha zingine.
  • Imeondoa ujumbe wa onyo kuhusu kipengele cha majaribio wakati wa kupakia moduli ECMAScript 6 kuunganishwa na kusafirishwa kwa kutumia taarifa za uingizaji na usafirishaji. Wakati huo huo, utekelezaji wa modules za ESM yenyewe hubakia majaribio.
  • Injini ya V8 imesasishwa hadi toleo 8.1 (1, 2, 3), ambayo inajumuisha uboreshaji mpya wa utendakazi na vipengele kama vile opereta mpya ya kimantiki ya upatanisho "??" (hurejesha operesheni ya kulia ikiwa operesheni ya kushoto ni NULL au haijafafanuliwa, na kinyume chake), mwendeshaji "?." kwa ukaguzi wa mara moja wa msururu mzima wa sifa au simu (kwa mfano, "db?.user?.name?.length" bila ukaguzi wa awali), mbinu ya Intl.DisplayName ya kupata majina yaliyojanibishwa, n.k.
  • Marekebisho ya API ya Mipasho yalifanywa, yenye lengo la kuboresha uthabiti wa API za Mipasho na kuondoa tofauti katika tabia ya sehemu za msingi za Node.js. Kwa mfano, tabia ya http.OutgoingMessage iko karibu na stream.Writable, na net.Socket ni sawa na stream.Duplex. Chaguo la AutoDestroy limewekwa kuwa "kweli" kwa chaguo-msingi, ambayo ina maana ya kupiga "_destroy" baada ya kukamilika.
  • Imeongeza usaidizi wa majaribio wa API WASI (Kiolesura cha Mfumo wa WebAssembly), kutoa miingiliano ya programu kwa mwingiliano wa moja kwa moja na mfumo wa uendeshaji (POSIX API ya kufanya kazi na faili, soketi, nk).
  • Kuongezeka kwa mahitaji ya matoleo madogo wakusanyaji na majukwaa: macOS 10.13 (High Sierra), GCC 6, Windows mpya zaidi 7/2008R2.

Tukumbuke kwamba jukwaa la Node.js linaweza kutumika kwa usaidizi wa upande wa seva wa programu za Wavuti na kuunda programu za kawaida za mtandao wa mteja na seva. Ili kupanua utendakazi wa programu za Node.js, idadi kubwa ya mkusanyiko wa moduli, ambayo unaweza kupata moduli na utekelezaji wa seva na wateja HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli za kuunganishwa na mifumo mbali mbali ya wavuti, vidhibiti vya WebSocket na Ajax, viunganishi vya DBMS (MySQL, PostgreSQL, SQLite). , MongoDB ), injini za violezo, injini za CSS, utekelezaji wa algoriti za kriptografia na mifumo ya uidhinishaji (OAuth), vichanganuzi vya XML.

Ili kushughulikia idadi kubwa ya maombi sawia, Node.js hutumia muundo wa utekelezaji wa msimbo usiolingana kulingana na uchakataji wa tukio lisilozuia na kufafanua vidhibiti vya urejeshaji simu. Mbinu zinazotumika za miunganisho ya kuzidisha ni pamoja na epoll, kqueue, /dev/poll, na select. Maktaba hutumiwa kuzidisha miunganisho libuv, ambayo ni muundo wa juu zaidi uhuru kwenye mifumo ya Unix na zaidi ya IOCP kwenye Windows. Maktaba hutumiwa kuunda bwawa la nyuzi libeio, kwa kufanya maswali ya DNS katika hali isiyo ya kuzuia imeunganishwa c-ares. Simu zote za mfumo zinazosababisha kuzuia hutekelezwa ndani ya dimbwi la nyuzi kisha, kama vidhibiti vya mawimbi, hupitisha matokeo ya kazi yao kupitia bomba lisilo na jina. Utekelezaji wa msimbo wa JavaScript unahakikishwa kupitia matumizi ya injini iliyotengenezwa na Google V8 (Kwa kuongeza, Microsoft inatengeneza toleo la Node.js kwa injini ya Chakra-Core).

Katika msingi wake, Node.js ni sawa na mifumo Perl AnyEvent, Mashine ya Tukio la Ruby, Chatu Aliyepinda ΠΈ utekelezaji matukio katika Tcl, lakini kitanzi cha tukio katika Node.js kimefichwa kutoka kwa msanidi programu na kinafanana na kushughulikia tukio katika programu ya wavuti inayoendeshwa kwenye kivinjari. Wakati wa kuandika programu za node.js, ni muhimu kuzingatia mahususi ya programu inayoendeshwa na tukio, kwa mfano, badala ya kufanya "var result = db.query("chagua..");" kwa kusubiri kukamilika kwa kazi na usindikaji unaofuata wa matokeo, Node.js hutumia kanuni ya utekelezaji wa asynchronous, i.e. msimbo hubadilishwa kuwa "db.query("chagua..", chaguo la kukokotoa (matokeo) {uchakataji wa matokeo});", ambapo udhibiti utapita mara moja hadi kwenye msimbo zaidi, na matokeo ya hoja yatachakatwa data inapowasili. .

Chanzo: opennet.ru

Kuongeza maoni