Server-side JavaScript platform Node.js 20.0 ilipo

Kutulutsidwa kwa Node.js 20.0, nsanja yogwiritsira ntchito ma network mu JavaScript, kwachitika. Node.js 20.0 yaperekedwa ku nthambi yothandizira yaitali, koma udindowu sudzaperekedwa mpaka October, pambuyo pokhazikika. Node.js 20.x idzathandizidwa mpaka pa Epulo 30, 2026. Kusamalira nthambi yapitayi ya Node.js 18.x LTS kudzatha mpaka Epulo 2025, ndi nthambi yapitayi ya 16.x LTS mpaka Seputembara 2023. Nthambi ya 14.x LTS idzasungidwa pa Epulo 30, ndipo nthambi yanthawi ya Node.js 19.x pa Juni 1.

Kusintha kwakukulu:

  • Injini ya V8 yasinthidwa kukhala 11.3, yomwe imagwiritsidwa ntchito ku Chromium 113. Pazosintha poyerekeza ndi nthambi ya Node.js 19, yomwe inagwiritsa ntchito injini ya Chromium 107, String.prototype.isWellFormed ndi ntchito zaWellFormed, Array.prototype ndi njira za TypedArray.prototype zogwirira ntchito ndi kopi pakusintha kwa zinthu za Array ndi TypedArray, mbendera ya "v" mu RegExp, kuthandizira kukulitsa kukula kwa ArrayBuffer ndi kuwonjezera kukula kwa SharedArrayBuffer, tail-call mu WebAssembly.
  • Njira yoyeserera ya Permission Model ikuperekedwa yomwe imakulolani kuti muchepetse mwayi wopezeka pazinthu zina panthawi yakupha. Thandizo la Chilolezo cha Chilolezo chimayatsidwa pofotokoza mbendera ya "--experimental-permission" pamene ikuyenda. Pakukhazikitsa koyambirira, zosankha zidapangidwa kuti ziletse kulemba (--allow-fs-write) ndikuwerenga (--allow-fs-read) kupeza magawo ena a FS, njira za ana (--lola-child-process) , zowonjezera (--no-addons) ndi ulusi (--allow-worker). Mwachitsanzo, kulola kulemba ku / tmp chikwatu ndikuwerenga /home/index.js fayilo, mutha kufotokoza: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js

    Kuti muwone mwayi wopezeka, akulangizidwa kugwiritsa ntchito njira ya process.permission.has(), mwachitsanzo, "process.permission.has('fs.write',"/tmp/test").

  • Ma Handlers a ma module akunja a ECMAScript (ESMs) omwe amanyamulidwa kudzera pa "--experimental-loader" njira tsopano akuchitidwa mu ulusi wosiyana, wolekanitsidwa ndi ulusi waukulu, womwe umathetsa mphambano ya code yogwiritsira ntchito ndi ma modules odzaza ESM. Mofanana ndi asakatuli, njira ya import.meta.resolve() tsopano imagwira ntchito mofanana ikaitanidwa kuchokera mkati mwa pulogalamu. Mu imodzi mwa nthambi zotsatila za Node.js, ESM yotsegula thandizo ikukonzekera kusunthidwa ku gulu la zinthu zokhazikika.
  • Node: test (test_runner) module, yopangidwa kuti ipange ndikuyesa mayeso a JavaScript omwe amabweretsa zotsatira mumtundu wa TAP (Test Anything Protocol), yasunthidwa kukhala yokhazikika.
  • Gulu lapadera la magwiridwe antchito lapangidwa, lomwe, pokonzekera nthambi yatsopano, lagwira ntchito kuti lifulumizitse zigawo zosiyanasiyana za nthawi yothamanga, kuphatikizapo URL parsing, fetch() ndi EventTarget. Mwachitsanzo, kuchuluka kwa kuyambitsa EventTarget kwachepetsedwa ndi theka, magwiridwe antchito a njira ya URL.canParse() adawongoleredwa bwino, ndipo magwiridwe antchito a zowerengera zawongoleredwa. Kuphatikiza apo, kutulutsidwa kwa ulalo wochita bwino kwambiri - Ada 2.0, wolembedwa mu C ++, akuphatikizidwa muzolembazo.
  • Kupanga mawonekedwe oyesera popereka mapulogalamu mumtundu wa fayilo imodzi yokha (SEA, Single Executable Applications) kwapitilira. Kuti mupange chotheka kuchita tsopano pamafunika kulowetsa blob yopangidwa kuchokera ku fayilo ya JSON (m'malo mosintha fayilo ya JavaScript).
  • Kugwirizana kwa Web Crypto API ndi kukhazikitsidwa kwa ma projekiti ena.
  • Thandizo lovomerezeka la Windows pamakina a ARM64.
  • Kupitiliza kuthandizira kwa WASI (WebAssembly System Interface) popanga mapulogalamu oima pa WebAssembly. Kuchotsa kufunikira kofotokozera mbendera yapadera ya mzere wa lamulo kuti athe thandizo la WASI.

Pulatifomu ya Node.js itha kugwiritsidwa ntchito pokonza ma seva a mapulogalamu a pa intaneti komanso kupanga mapulogalamu okhazikika a kasitomala ndi ma seva. Kukulitsa magwiridwe antchito a Node.js, gulu lalikulu la ma module akonzedwa, momwe mungapeze ma module ndi kukhazikitsa kwa HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 ma seva ndi makasitomala, ma module ophatikizira. yokhala ndi mawebusayiti osiyanasiyana, WebSocket ndi Ajax handlers, zolumikizira za DBMS (MySQL, PostgreSQL, SQLite, MongoDB), injini zowonera, injini za CSS, kukhazikitsidwa kwa ma crypto algorithms ndi machitidwe ovomerezeka (OAuth), XML parsers.

Kuonetsetsa kukonzedwa kwa zopempha zambiri zofananira, Node.js imagwiritsa ntchito njira yotsatsira ma code asynchronous potengera kusatsekereza zochitika zosatsekereza komanso kutanthauzira kwa omenyera callback. Njira zothandizira zolumikizira ma multiplexing ndi epoll, kqueue, /dev/poll, ndikusankha. Pakulumikiza kuchulukitsa, laibulale ya libuv imagwiritsidwa ntchito, yomwe ndi chowonjezera cha libev pa Unix system ndi IOCP pa Windows. Laibulale ya libeio imagwiritsidwa ntchito popanga dziwe la ulusi, ndipo ma c-ares amaphatikizidwa kuti achite mafunso a DNS munjira yosatsekereza. Mafoni onse omwe amayambitsa kutsekereza amachitidwa mkati mwa dziwe la ulusi ndiyeno, monga oyendetsa ma siginecha, amasamutsa zotsatira za ntchito yawo kudzera pa chitoliro chosatchulidwa dzina (chitoliro). Kukonzekera kwa JavaScript code kumaperekedwa pogwiritsa ntchito injini ya V8 yopangidwa ndi Google (kuphatikizanso, Microsoft ikupanga Node.js ndi injini ya Chakra-Core).

Pachimake, Node.js ndi ofanana ndi Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, ndi kukhazikitsidwa kwa zochitika za Tcl, koma zochitika za Node.js zimabisika kwa wopanga mapulogalamu ndipo zimafanana ndi zochitika pa intaneti. mu msakatuli. Polemba mapulogalamu a node.js, muyenera kuganizira zazomwe zimayendetsedwa ndi zochitika, mwachitsanzo, m'malo mochita "var result = db.query("select..");" podikirira kumaliza ntchito ndikukonza zotsatila, Node.js imagwiritsa ntchito mfundo ya kuphedwa kosagwirizana, i.e. code imasinthidwa kukhala "db.query("select..", function (result) {result processing});", momwe ulamuliro udzadutsa nthawi yomweyo ku code yowonjezera, ndipo zotsatira zafunso zidzasinthidwa pamene deta ikufika.

Source: opennet.ru

Kuwonjezera ndemanga