Llwyfan JavaScript Node.js 22.0.0 ar gael

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

Ychwanegu sylw