JavaScript pallur á netþjóni Node.js 20.0 í boði

Útgáfa Node.js 20.0, vettvangs til að keyra netforrit í JavaScript, hefur átt sér stað. Node.js 20.0 hefur verið úthlutað í langa stuðningsgreinina, en þessari stöðu verður ekki úthlutað fyrr en í október, eftir stöðugleika. Node.js 20.x verður stutt til 30. apríl 2026. Viðhald á fyrra Node.js 18.x LTS útibúi mun vara til apríl 2025 og fyrra 16.x LTS útibú til september 2023. 14.x LTS útibúið verður viðhaldið 30. apríl og Node.js 19.x bráðabirgðaútibúið 1. júní.

Helstu endurbætur:

  • V8 vélin hefur verið uppfærð í útgáfu 11.3, sem er notuð í Chromium 113. Af breytingunum miðað við Node.js 19 útibúið, sem notaði Chromium 107 vélina, String.prototype.isWellFormed og toWellFormed aðgerðir, Array.prototype og TypedArray.prototype aðferðir til að vinna með afrit við breytingu á Array og TypedArray hlutum, "v" fána í RegExp, stuðningur við að breyta stærð ArrayBuffer og auka stærð SharedArrayBuffer, tail-call í WebAssembly.
  • Lagt er til tilraunakerfi fyrir leyfislíkan sem gerir þér kleift að takmarka aðgang að ákveðnum auðlindum meðan á framkvæmd stendur. Stuðningur leyfislíkana er virkjaður með því að tilgreina „--tilraunaleyfi“ fána þegar keyrt er. Í upphaflegri útfærslu voru lagðar fram valkostir til að takmarka skrif (--allow-fs-write) og lestur (--allow-fs-read) aðgang að ákveðnum hlutum FS, barnaferla (--allow-child-process) , viðbætur (--no-addons ) og þræðir (-allow-worker). Til dæmis, til að leyfa að skrifa í /tmp skrána og lesa /home/index.js skrána, geturðu tilgreint: hnútur --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js vísitala .js

    Til að athuga aðgang er mælt með því að nota process.permission.has() aðferðina, til dæmis "process.permission.has('fs.write',"/tmp/test").

  • Meðhöndlarar fyrir ECMAScript ytri einingar (ESMs) sem hlaðnar eru í gegnum "--experimental-loader" valkostinn eru nú keyrðir í sérstökum þræði, einangruðum frá aðalþræðinum, sem útilokar skurðpunkta forritakóða og hlaðna ESM einingar. Svipað og í vafra, keyrir import.meta.resolve() aðferðin nú samstillt þegar hringt er úr forriti. Í einni af næstu greinum Node.js er áætlað að ESM hleðslustuðningur verði færður í flokk stöðugra eiginleika.
  • Node:test (test_runner) einingin, hönnuð til að búa til og keyra JavaScript próf sem skila niðurstöðum á TAP (Test Anything Protocol) sniði, hefur verið færð í stöðugt.
  • Sérstakt frammistöðuteymi hefur verið stofnað sem, í undirbúningi fyrir nýju útibúið, hefur unnið að því að flýta fyrir ýmsum keyrsluþáttum, þar á meðal URL-þáttun, fetch() og EventTarget. Til dæmis hefur kostnaður við að frumstilla EventTarget verið helmingaður, árangur URL.canParse() aðferðarinnar hefur verið bætt verulega og skilvirkni tímamælanna hefur verið bætt. Að auki er útgáfa af afkastamiklum vefslóðaflokki - Ada 2.0, skrifuð í C ++, innifalin í samsetningunni.
  • Þróun tilraunaeiginleika til að afhenda forrit í formi einnar keyrsluskrár (SEA, Single Executable Applications) hefur haldið áfram. Til að búa til executable núna þarf að skipta út kubb sem myndaður er úr JSON stillingarskrá (í stað þess að skipta út JavaScript skrá).
  • Bættur Web Crypto API samhæfni við útfærslur frá öðrum verkefnum.
  • Bætt við opinberum stuðningi fyrir Windows á ARM64 kerfum.
  • Áframhaldandi stuðningur við WASI (WebAssembly System Interface) viðbætur til að búa til sjálfstæð WebAssembly forrit. Fjarlægði þörfina á að tilgreina sérstaka skipanalínufána til að virkja WASI stuðning.

Node.js pallurinn er bæði hægt að nota til að viðhalda netþjónum á vefforritum og til að búa til venjuleg netforrit fyrir biðlara og netþjóna. Til að auka virkni forrita fyrir Node.js hefur verið útbúið mikið safn eininga, þar sem þú getur fundið einingar með útfærslu á HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 netþjónum og viðskiptavinum, einingar til samþættingar með ýmsum vefumgjörðum, WebSocket og Ajax meðhöndlum, DBMS tengjum (MySQL, PostgreSQL, SQLite, MongoDB), sniðmátunarvélum, CSS vélum, útfærslur á dulritunaralgrímum og heimildakerfum (OAuth), XML þáttara.

Til að tryggja vinnslu á miklum fjölda samhliða beiðna notar Node.js ósamstillt keyrslulíkan sem byggir á ólokandi atburðameðferð og skilgreiningu á meðhöndlun svarhringinga. Aðferðir sem studdar eru til að margfalda tengingar eru epoll, kqueue, /dev/poll og select. Fyrir tengingar margföldun er libuv bókasafnið notað, sem er viðbót fyrir libev á Unix kerfum og IOCP á Windows. Libeio bókasafnið er notað til að búa til þráðasafn og c-ares er samþætt til að framkvæma DNS fyrirspurnir í ólokandi ham. Öll kerfissímtöl sem valda lokun eru keyrð inni í þráðapottinum og flytja síðan, eins og merkjameðferðaraðilar, niðurstöðu vinnu sinnar aftur í gegnum ónefnda pípu (pípu). Framkvæmd JavaScript kóða er veitt með notkun V8 vélarinnar sem Google hefur þróað (auk þess er Microsoft að þróa útgáfu af Node.js með Chakra-Core vélinni).

Í kjarna sínum er Node.js svipað og Perl AnyEvent, Ruby Event Machine, Python Twisted ramma og Tcl viðburðarútfærslan, en viðburðarlykkjan í Node.js er falin þróunaraðilanum og líkist viðburðameðferð í vefforriti sem keyrir í vafra. Þegar þú skrifar forrit fyrir node.js þarftu að hafa í huga sérstöðu atburðadrifna forritunar, til dæmis í stað þess að gera "var result = db.query("select..");" með bið eftir verklokum og síðari úrvinnslu á niðurstöðum notar Node.js meginregluna um ósamstillta framkvæmd, þ.e. Kóðanum er umbreytt í "db.query("velja..", fall (niðurstaða) {niðurstöðuvinnsla});", þar sem stjórn mun samstundis fara í frekari kóða og niðurstöður fyrirspurnarinnar verða unnar þegar gögn berast.

Heimild: opennet.ru

Bæta við athugasemd