JavaScript-platform Node.js 22.0.0 beskikbaar

Node.js 22.0 is vrygestel, 'n platform om netwerktoepassings in JavaScript te laat loop. Node.js 22.0 word as 'n langtermyn-ondersteuningstak geklassifiseer, maar hierdie status sal eers in Oktober, na stabilisering, toegeken word. Node.js 22.x sal tot 30 April 2027 ondersteun word. Instandhouding van die vorige LTS-tak van Node.js 20.x sal tot April 2026 duur, en die voorverlede jaar LTS-tak 18.x tot April 2025. Die opvoertak van Node.js 21.x sal op 1 Junie 2024 gestaak word.

Belangrikste verbeterings:

  • Die V8-enjin is opgedateer na weergawe 12.4, wat in Chromium 124 gebruik word. Onder die veranderinge in vergelyking met die Node.js 21-tak, wat die V8 11.8-enjin gebruik het), word opgemerk:
    • Ondersteuning vir die WasmGC-uitbreiding, wat die oordrag van programme wat in programmeertale geskryf is wat 'n vullisverwyderaar (Kotlin, PHP, Java, ens.) na WebAssembly gebruik, vergemaklik. WasmGC voeg nuwe soorte strukture en skikkings by wat nie-lineêre geheuetoewysing kan gebruik.
    • Ondersteuning vir die Array.fromAsync() metode, wat asynchronies 'n nuwe instansie van 'n Array-objek terugstuur wat gekopieer is vanaf 'n skikking-agtige, itereerbare of asynchrone iterable-objek.
    • Ondersteuning vir iterator-metodes soos .map, .filter, .find, .take, .drop, .forEach en .reduce.
    • Ondersteuning vir 'n Stel-objek wat 'n versameling waardes definieer en metodes bied wat algemene stelbewerkings implementeer, soos kruising, vereniging, verskil en optelling.
  • Die Maglev-optimaliserende JIT-samesteller is by verstek geaktiveer, wat daarop gemik is om vinnig hoëprestasie-masjienkode te genereer vir swaar gebruikte JavaScript-kode. As Maglev geaktiveer word, kan kortstondige CLI-toepassings wat nie langtermyn-bewerkings uitvoer nie aansienlik bespoedig, byvoorbeeld, die tyd om die Jetstrea-toets te voltooi, word met 7.5% verminder, en die Speedometer-toets met 5%.
  • Werk met strome is versnel deur die waarde van die highWaterMark-opsie van 16 KB tot 65 KB te verhoog (definieer die limiet waartoe opname gebuffer word). Die verandering lei tot verhoogde geheueverbruik, so toepassings wat ontwerp is om op beperkte RAM te werk, sal dalk na die ou waarde moet terugkeer via 'n oproep na setDefaultHighWaterMark().
  • Verbeterde werkverrigting van die haal() en toetsloper-API's deur AbortSignal-instansiasie meer doeltreffend te maak. Die werkverrigting van API's wat verband hou met sinchroniese werk met lêerstelsels is verbeter.
  • 'n Eksperimentele kenmerk is verskaf om die "require()"-oproep te gebruik om JavaScript ESM-modules (ECMAScript-modules) in sinchroniese modus te laai. ESM-modules word in blaaiers gebruik en vervang CommonJS-modules spesifiek vir Node.js. Om via "require()" te laai, moet die ESM-module in sinchroniese modus uitgevoer word (sonder om op die boonste vlak te wag). Ondersteuning word geaktiveer via die "--eksperimentele-vereis-module" vlag.
  • Bygevoeg eksperimentele vermoë om skrifte wat in die package.json-lêer gedefinieer is, uit te voer deur die "--run" opdrag te gebruik "
  • Die "node -watch"-opdrag is na die stabiele kategorie geskuif met die implementering van 'n kykmodus wat verseker dat die proses herbegin word wanneer die ingevoerde lêer verander (byvoorbeeld, as "node -watch index.js" uitgevoer word, sal die proses sal outomaties herbegin word wanneer index.js verander).
  • Die inheemse implementering van die WebSocket API is gestabiliseer, sodat WebSocket in kliëntmodus gebruik kan word sonder om bykomende afhanklikhede te installeer.
  • Bygevoeg gedeeltelike ondersteuning vir die Navigator API.
  • Die Webstreams API het ondersteuning bygevoeg vir die deflate-rou kompressieformaat.
  • Glob- en globSync-funksies by node:fsmodule gevoeg vir patroonpassing van lêerpaaie.
  • Verbeterde hantering van verkeerd gekonfigureerde IPv6-stapels. Het Happy Eyeballs-algoritme geïmplementeer vir vinnige terugrol in geval van probleme met IPv6-werking.
  • Die util API is opgeskort.
  • Opgedateerde afhanklikheidsweergawes: 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 na 3.8.0, ada 2.7.7 en.. .

Die Node.js-platform kan gebruik word vir beide bedienerkant-ondersteuning van webtoepassings en vir die skep van standaard kliënt- en bedienerkant-netwerkprogramme. Om die funksionaliteit van Node.js-toepassings uit te brei, is 'n groot versameling modules voorberei, insluitend dié wat ... implementeer. bedieners en kliënte van HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modules vir integrasie met verskeie webraamwerke, WebSocket- en Ajax-hanteerders, verbindings met DBMS (MySQL, PostgreSQL, SQLite, MongoDB), sjabloon-enjins, CSS-enjins, implementerings van kriptografiese algoritmes en magtigingstelsels (OAuth), XML-ontleders.

Om groot getalle parallelle versoeke te hanteer, gebruik Node.js 'n asynchrone kode-uitvoeringsmodel gebaseer op nie-blokkerende gebeurtenisverwerking en die definisie van terugbelhanteerders. Ondersteunde metodes vir multipleksing van verbindings sluit in epoll, kqueue, /dev/poll, en select. Vir verbindingsmultipleksing word die libuv-biblioteek gebruik, wat 'n byvoeging is tot libev op Unix-stelsels en tot IOCP op Windows. Die libeio-biblioteek word gebruik om 'n draadpoel te skep, en c-ares is geïntegreer om DNS-navrae in 'n nie-blokkerende modus uit te voer. Alle stelseloproepe wat blokkering veroorsaak, word binne die draadpoel uitgevoer en stuur dan, soos seinhanteerders, die resultaat van hul werk terug deur 'n naamlose pyp.

Die uitvoering van JavaScript-kode word verseker deur die gebruik van die V8-enjin wat deur Google ontwikkel is (daarby ontwikkel Microsoft 'n weergawe van Node.js met die Chakra-Core-enjin). In sy kern is Node.js soortgelyk aan die Perl AnyEvent, Ruby Event Machine, Python Twisted-raamwerke en die implementering van gebeure in Tcl, maar die gebeurtenislus in Node.js is weggesteek vir die ontwikkelaar en lyk soos gebeurtenisverwerking in 'n webtoepassing loop in blaaier.

Bron: opennet.ru

Voeg 'n opmerking