Kutolewa kwa JavaScript Node.js 16.0 ya upande wa seva

Node.js 16.0 ilitolewa, jukwaa la kuendesha programu za mtandao katika JavaScript. Node.js 16.0 imeainishwa kama tawi la usaidizi wa muda mrefu, lakini hali hii itawekwa mnamo Oktoba pekee, baada ya uimarishaji. Node.js 16.0 itatumika hadi Aprili 2023. Matengenezo ya tawi la awali la LTS la Node.js 14.0 litaendelea hadi Aprili 2023, na mwaka mmoja kabla ya tawi la mwisho la LTS 12.0 hadi Aprili 2022. Usaidizi wa tawi la 10.0 LTS utakatishwa baada ya siku 10.

Maboresho kuu:

  • Injini ya V8 imesasishwa hadi toleo la 9.0 (Node.js 15 ilitumika toleo la 8.6), ambayo inaruhusu utekelezaji wa vipengele kama vile sifa ya "fahirisi" kwa maneno ya kawaida (pamoja na safu yenye nafasi za kuanzia na za mwisho za vikundi vya mechi) , mbinu ya Atomiki katika Node.js 16 .waitAsync (toleo la async la Atomics.wait), msaada wa kutumia neno kuu la kusubiri katika moduli za kiwango cha juu. Simu za utendakazi zimeharakishwa katika hali ambapo idadi ya hoja zilizopitishwa hailingani na vigezo vilivyoainishwa katika chaguo la kukokotoa.
  • API ya Timers Promises imeimarishwa, ikitoa seti mbadala ya vitendakazi vya kufanya kazi na vipima muda ambavyo hurejesha vitu vya Ahadi kama matokeo, ambayo huondoa hitaji la kutumia util.promisify(). agiza { setTimeout } kutoka kwa 'vipima muda/ahadi'; kazi ya async run() {wait setTimeout(5000); console.log('Hujambo, Ulimwengu!'); } kukimbia ();
  • Utekelezaji wa majaribio wa Web Crypto API umeongezwa, iliyoundwa kutekeleza shughuli za kimsingi za kriptografia kwa upande wa programu za wavuti, kama vile kudhibiti heshi za kriptografia, kutoa na kuthibitisha saini za kidijitali, kusimba na kusimbua data kwa kutumia mbinu mbalimbali za usimbaji fiche, na kuzalisha usalama wa kriptografia. nambari za nasibu. API pia hutoa kazi za kutengeneza na kudhibiti vitufe.
  • N-API (API ya kutengeneza programu jalizi) imesasishwa hadi toleo la 8.
  • Mpito kwa toleo jipya la msimamizi wa kifurushi NPM 7.10 umefanywa.
  • Imeimarisha utekelezaji wa aina ya AbortController, ambayo inategemea API ya Wavuti ya AbortController na inaruhusu mawimbi kughairiwa katika API zilizochaguliwa kulingana na Ahadi.
  • Usaidizi wa toleo la tatu la umbizo la Ramani Chanzo, linalotumika kulinganisha moduli zilizozalishwa, kuchakatwa au kufungwa na msimbo asilia, umeimarishwa.
  • Kwa uoanifu na API za Wavuti zilizopitwa na wakati, mbinu za buffer.atob(data) na buffer.btoa(data) zimeongezwa.
  • Uundaji wa makusanyiko ya vifaa vipya vya Apple vilivyo na chip ya M1 ARM imeanza.
  • Kwenye jukwaa la Linux, mahitaji ya toleo la mkusanyaji yamepandishwa hadi GCC 8.3.

Hebu tukumbuke kwamba jukwaa la Node.js linaweza kutumika kwa usaidizi wa seva wa programu za Wavuti na kwa kuunda programu za kawaida za mtandao wa mteja na seva. Ili kupanua utendakazi wa programu za Node.js, mkusanyiko mkubwa wa moduli umeandaliwa, ambayo unaweza kupata moduli na utekelezaji wa HTTP, SMTP, XMPP, DNS, FTP, IMAP, seva za POP3 na wateja, moduli za ujumuishaji. yenye mifumo mbalimbali 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. Kwa uunganisho wa kuzidisha, maktaba ya libuv hutumiwa, ambayo ni nyongeza ya libev kwenye mifumo ya Unix na kwa IOCP kwenye Windows. Maktaba ya libeio inatumiwa kuunda mkusanyiko wa nyuzi, na c-ares imeunganishwa kutekeleza hoja za DNS katika hali isiyozuia. 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 ya V8 iliyotengenezwa na Google (kwa kuongeza, Microsoft inatengeneza toleo la Node.js kwa injini ya Chakra-Core).

Kwa msingi wake, Node.js ni sawa na Perl AnyEvent, Ruby Event Machine, mifumo ya Python Twisted na utekelezaji wa matukio katika Tcl, lakini kitanzi cha tukio katika Node.js kimefichwa kutoka kwa msanidi programu na kinafanana na usindikaji wa tukio katika programu ya wavuti. inayoendesha katika 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.

Zaidi ya hayo, inaweza kuzingatiwa kuwa kampuni ya Deno, iliyoanzishwa na muundaji wa Node.js ili kuendeleza jukwaa la kizazi kijacho la Deno, ilipokea $ 4.9 milioni katika uwekezaji. Kwa madhumuni yake, Deno ni sawa na Node.js, lakini inajaribu kuondoa makosa ya dhana yaliyofanywa katika usanifu wa Node.js na kutoa watumiaji mazingira salama zaidi. Imebainika kuwa suluhu za biashara za Deno zitajengwa kwenye bidhaa zilizo wazi kabisa, na mfano wa Open Core wenye utendaji tofauti unaolipwa unachukuliwa kuwa haukubaliki kwa jukwaa la Deno.

Chanzo: opennet.ru

Kuongeza maoni