Rhyddhawyd Node.js 22.0, llwyfan ar gyfer rhedeg cymwysiadau rhwydwaith yn JavaScript. Mae Node.js 22.0 yn cael ei ddosbarthu fel cangen gefnogaeth hirdymor, ond dim ond ym mis Hydref y bydd y statws hwn yn cael ei neilltuo, ar ôl sefydlogi. Bydd Node.js 22.x yn cael ei gefnogi tan Ebrill 30, 2027. Bydd cynnal a chadw cangen flaenorol LTS o Node.js 20.x yn para tan fis Ebrill 2026, a'r flwyddyn cyn y gangen LTS ddiwethaf 18.x tan fis Ebrill 2025. Bydd cangen lwyfannu Node.js 21.x yn dod i ben ar 1 Mehefin, 2024.
Prif welliannau:
- Mae'r injan V8 wedi'i diweddaru i fersiwn 12.4, a ddefnyddir yn Chromium 124. Ymhlith y newidiadau o'i gymharu â changen Node.js 21, a ddefnyddiodd yr injan V8 11.8), nodir:
- Cefnogaeth i estyniad WasmGC, sy'n symleiddio'r broses o drosglwyddo rhaglenni a ysgrifennwyd mewn ieithoedd rhaglennu sy'n defnyddio casglwr sbwriel (Kotlin, PHP, Java, ac ati) i WebAssembly. Mae WasmGC yn ychwanegu mathau newydd o strwythurau ac araeau a all ddefnyddio dyraniad cof aflinol.
- Cefnogaeth i'r dull Array.fromAsync(), sy'n dychwelyd yn anghydamserol enghraifft newydd o wrthrych Array wedi'i gopïo o wrthrych ailadroddadwy tebyg i arae, ailadroddadwy neu asyncronig.
- Cefnogaeth i ddulliau iterator fel .map, .filter, .find, .take, .drop, .forEach a .reduce.
- Cefnogaeth i wrthrych Set sy'n diffinio casgliad o werthoedd ac yn cynnig dulliau sy'n gweithredu gweithrediadau gosod cyffredin, megis croestoriad, undeb, gwahaniaeth, ac adio.
- Mae casglwr optimeiddio JIT Maglev wedi'i alluogi yn ddiofyn, gyda'r nod o gynhyrchu cod peiriant perfformiad uchel yn gyflym ar gyfer cod JavaScript a ddefnyddir yn helaeth. Gall galluogi Maglev gyflymu ceisiadau CLI byrhoedlog yn sylweddol nad ydynt yn perfformio gweithrediadau hirdymor, er enghraifft, mae'r amser i gwblhau'r prawf Jetstrea yn cael ei leihau 7.5%, a'r prawf Speedomedr 5%.
- Mae gwaith gyda ffrydiau wedi'i gyflymu trwy gynyddu gwerth yr opsiwn HighWaterMark o 16 KB i 65 KB (sy'n diffinio'r terfyn y caiff recordio ei glustogi). Mae'r newid yn arwain at fwy o ddefnydd cof, felly efallai y bydd angen i gymwysiadau sydd wedi'u cynllunio i redeg ar RAM cyfyngedig ddychwelyd yr hen werth trwy alwad i setDefaultHighWaterMark().
- Gwell perfformiad o'r APIs fetch() a rhedwr prawf trwy wneud cyflymiad AbortSignal yn fwy effeithlon. Mae perfformiad APIs sy'n ymwneud â gwaith cydamserol gyda systemau ffeiliau wedi'i wella.
- Mae nodwedd arbrofol wedi'i darparu i ddefnyddio'r alwad "require()" i lwytho modiwlau JavaScript ESM (Modiwlau ECMScript) yn y modd cydamserol. Defnyddir modiwlau ESM mewn porwyr ac maent yn disodli modiwlau CommonJS sy'n benodol i Node.js. I lwytho trwy "require()", rhaid gweithredu'r modiwl ESM yn y modd cydamserol (heb aros am y lefel uchaf). Galluogir cymorth trwy'r faner “--arbrofol-gofyniad-modiwl”.
- Ychwanegwyd gallu arbrofol i redeg sgriptiau a ddiffinnir yn y ffeil package.json gan ddefnyddio'r gorchymyn "--run". "
- Mae'r gorchymyn "node -watch" wedi'i symud i'r categori sefydlog gyda gweithrediad modd gwylio sy'n sicrhau bod y broses yn cael ei ailgychwyn pan fydd y ffeil a fewnforiwyd yn newid (er enghraifft, os gweithredir "node -watch index.js", y bydd y broses yn cael ei hailddechrau'n awtomatig pan fydd index.js yn newid).
- Mae gweithrediad brodorol API WebSocket wedi'i sefydlogi, gan ganiatáu i WebSocket gael ei ddefnyddio yn y modd cleient heb osod dibyniaethau ychwanegol.
- Ychwanegwyd cefnogaeth rannol ar gyfer yr API Navigator.
- Mae'r Webstreams API wedi ychwanegu cefnogaeth ar gyfer y fformat cywasgu datchwyddiant-amrwd.
- Ychwanegwyd swyddogaethau glob a globSync i nod: fsmodule ar gyfer paru patrwm llwybrau ffeiliau.
- Gwell ymdriniaeth o staciau IPv6 sydd wedi'u ffurfweddu'n anghywir. Wedi gweithredu algorithm Happy Eyeballs ar gyfer dychwelyd yn gyflym rhag ofn y bydd problemau gyda gweithrediad IPv6.
- Mae'r util API wedi'i anghymeradwyo.
- Fersiynau dibyniaeth wedi'u diweddaru: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson i 3.8.0, ada 2.7.7 a 6.6.0 a undici. .
Gellir defnyddio'r platfform Node.js ar gyfer cefnogaeth ochr y gweinydd i gymwysiadau gwe ac ar gyfer creu rhaglenni rhwydwaith safonol ochr y cleient a'r gweinydd. Er mwyn ehangu ymarferoldeb cymwysiadau Node.js, mae casgliad mawr o fodiwlau wedi'u paratoi, gan gynnwys y rhai sy'n gweithredu gweinyddwyr a chleientiaid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modiwlau ar gyfer integreiddio â gwahanol fframweithiau gwe, trinwyr WebSocket ac Ajax, cysylltwyr i DBMS (MySQL, PostgreSQL, SQLite, MongoDB), peiriannau templedi, peiriannau CSS, gweithrediadau algorithmau cryptograffig a systemau awdurdodi (OAuth), dadansoddwyr XML.
I drin nifer fawr o geisiadau cyfochrog, mae Node.js yn defnyddio model gweithredu cod asyncronaidd yn seiliedig ar brosesu digwyddiadau nad yw'n rhwystro a diffinio trinwyr galwadau yn ôl. Mae dulliau a gefnogir ar gyfer cysylltiadau amlblecsio yn cynnwys epoll, kqueue, /dev/poll, a dewis. Ar gyfer amlblecsio cysylltiad, defnyddir y llyfrgell libuv, sy'n ychwanegiad i libev ar systemau Unix ac i IOCP ar Windows. Defnyddir y llyfrgell libeio i greu cronfa edau, ac mae c-ares wedi'i integreiddio i gyflawni ymholiadau DNS mewn modd nad yw'n rhwystro. Mae'r holl alwadau system sy'n achosi blocio yn cael eu gweithredu o fewn y pwll edau ac yna, fel trinwyr signal, yn trosglwyddo canlyniad eu gwaith yn ôl trwy bibell ddienw.
Sicrheir gweithrediad cod JavaScript trwy ddefnyddio'r injan V8 a ddatblygwyd gan Google (yn ogystal, mae Microsoft yn datblygu fersiwn o Node.js gyda'r injan Chakra-Core). Yn greiddiol iddo, mae Node.js yn debyg i fframweithiau Perl AnyEvent, Ruby Event Machine, Python Twisted a gweithredu digwyddiadau yn Tcl, ond mae'r ddolen digwyddiad yn Node.js wedi'i chuddio oddi wrth y datblygwr ac mae'n debyg i brosesu digwyddiadau mewn cymhwysiad gwe rhedeg yn y porwr.
Ffynhonnell: opennet.ru
