Kutolewa kwa JavaScript Node.js 13.0 ya upande wa seva

Inapatikana kutolewa Node 13.0, majukwaa ya kuendesha programu za mtandao katika JavaScript. Wakati huo huo, uimarishaji wa tawi la awali la Node.js 12.x imekamilika, ambayo imehamishiwa kwenye kikundi cha matoleo ya muda mrefu ya usaidizi, sasisho ambazo hutolewa kwa miaka 4. Usaidizi kwa tawi la awali la LTS la Node.js 10.0 utaendelea hadi Aprili 2021, na usaidizi kwa tawi la mwisho la LTS 8.0 hadi Januari 2020.

kuu maboresho:

  • Injini ya V8 imesasishwa hadi toleo 7.8, ambayo hutumia mbinu mpya za kuboresha utendakazi, kuboresha urekebishaji wa kitu, kupunguza matumizi ya kumbukumbu, na kupunguza muda wa maandalizi kwa ajili ya utekelezaji wa WebAssembly;
  • Usaidizi kamili wa utangazaji wa kimataifa na Unicode inayotegemea maktaba imewezeshwa kwa chaguomsingi ICU (Vipengele vya Kimataifa vya Unicode), ambayo inaruhusu watengenezaji kuandika msimbo kuunga mkono fanya kazi na lugha tofauti na maeneo. Moduli kamili ya icu sasa imewekwa kwa chaguo-msingi;
  • API imetulia Nyuzi za Wafanyakazi, kuruhusu unda vitanzi vya matukio yenye nyuzi nyingi. Utekelezaji unategemea moduli ya worker_threads, ambayo inakuwezesha kuendesha msimbo wa JavaScript katika nyuzi nyingi zinazofanana. Usaidizi thabiti kwa API ya Threads ya Wafanyakazi pia imetumwa kwa tawi la LTS la Node.js 12.x;
  • Mahitaji ya majukwaa yameongezwa. Kwa kusanyiko sasa inahitajika angalau macOS 10.11 (inahitaji Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Usaidizi ulioboreshwa wa Python 3. Ikiwa mfumo una Python 2 na Python 3, Python 2 bado inatumika, lakini uwezo wa kujenga wakati Python 3 pekee imewekwa kwenye mfumo imeongezwa;
  • Utekelezaji wa zamani wa kichanganuzi cha HTTP (β€œβ€”http-parser=legacy”) umeondolewa. Simu na sifa zilizoondolewa au zilizoacha kutumika FSWatcher.prototype.start(), ChildProcess._channel, open() mbinu katika ReadStream na WriteStream vitu, request.connection, response.connection, module.createRequireFromPath();
  • Kufuatia akatoka sasisha 13.0.1, ambayo ilirekebisha hitilafu kadhaa haraka. Hasa, tatizo la npm 6.12.0 kuonyesha onyo kuhusu kutumia toleo lisilotumika limetatuliwa.

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