programmatūra · 4 min · 12.07.2026

Node.js 26 pēc noklusējuma ieslēdz Temporal un izmet sešus vecos stream moduļus

Node.js 26 ir pirmā versija, kurā Temporal datumu un laika API strādā bez atsevišķa karoga. Pēc devītos gados ilgas darba TC39 komitejā jaunā API tagad ir pieejama katrā node procesā, un tā aizstāj veco Date objektu ar skaidrāku laika zonu un ilguma apstrādi. Versija 26.0.0 iznāca 5. maijā, bet šonedēļ, 8. jūlijā, sekoja 26.5.0 ar teksta importiem un post-kvantu TLS atbalstu.

Node.js 26 ir Current laidiena līnija sešus mēnešus un oktobrī pāriet uz ilgtermiņa atbalstu (LTS). Tas nozīmē, ka produkcijas komandām, kas gaida LTS, tagad ir laiks pārbaudīt savu kodu pret izmaiņām, kuras šajā līnijā jau ir ieviestas.

Temporal bez karoga

Vecais Date JavaScript objekts glabā laiku kā milisekundes kopš 1970. gada, un jebkura laika zonu vai kalendāra loģika programmētājam bija jāraksta pašam vai jāpievieno ar bibliotēku. Temporal to sadala atsevišķos tipos: Temporal.PlainDate datumam bez laika zonas, Temporal.ZonedDateTime datumam ar zonu, Temporal.Duration ilgumam. Aprēķini ir nemainīgi — metode atgriež jaunu objektu, nevis maina esošo.

Node.js 26 to iegūst caur atjaunināto V8 dzinēju versijā 14.6, kas nāk no Chromium 146. Tas pats V8 laidiens ievieš divus jaunus standarta paņēmienus: Map.prototype.getOrInsert() nolasa atslēgu vai ieliek noklusēto vērtību vienā solī, un Iterator.concat() savieno vairākus iteratorus. Abi izmet kodu, ko izstrādātāji līdz šim rakstīja ar roku.

Seši iekšējie moduļi pazūd

Node.js 26 ir arī tīrīšanas laidiens. No izpildvides izņemti seši iekšējie stream moduļi: _stream_wrap, _stream_readable, _stream_writable, _stream_duplex, _stream_transform un _stream_passthrough. Tie nekad nebija daļa no publiskā API, bet daudzas vecākas paketes tos importēja tieši. Kods, kas uz tiem paļaujas, tagad krīt, un migrācija jāveic uz publisko node:stream.

Kopā ar tiem aizgāja http.Server.prototype.writeHeader() (aizvieto writeHead()) un eksperimentālais --experimental-transform-types karogs. Metode module.register() pārgāja uz izpildlaika deprecāciju — tā vēl strādā, bet met brīdinājumu.

Node.js 26 pieprasa GCC 13.2 kompilatoru, izmet Python 3.9 atbalstu būvēšanai un pāriet uz Windows SDK 11. Atmesta arī vecāku procesoru IBM Power 8 un IBM Z13 uzturēšana.

Kas jaunā 26.5.0

Astotajā jūlijā iznākušais 26.5.0 pievieno vairākas praktiskas lietas. Ar karogu --experimental-import-text tagad var importēt teksta failus tieši ESM modulī, bez fs.readFile apkārtceļa. Blob objekti ieguva blob.textStream(), kas straumē teksta saturu pa gabaliem un ietaupa atmiņu lieliem failiem.

Drošības pusē 26.5.0 sāk ziņot par TLS rokasspiedienā izvēlētajām kriptogrāfiskajām grupām, ieskaitot kvantu izturīgos variantus. Tas dod redzamību, vai savienojums izmanto post-kvantu atslēgu apmaiņu, kas iepriekš nebija tieši nolasāma. Straumju API publiskoja iepriekš iekšējo ReadableStreamTee, un perf_hooks ieguva event loop kavējuma paraugu ņemšanu katrā ciklā, kas ļauj precīzāk mērīt notikumu cilpas aizkavi.

Ko darīt pirms LTS

Undici HTTP klients Node.js 26 pamatā ir versijā 8.0. Komandām, kas gaida oktobra LTS, lielākais risks ir izņemtie stream iekšmoduļi un writeHeader(), ne jaunais Temporal. Ātrākais tests ir palaist esošo koda bāzi uz 26.5.0 un skatīties, kur parādās MODULE_NOT_FOUND vai deprecācijas brīdinājumi. InfoQ savā pārskatā norāda, ka tieši vecās paketes ar tiešiem iekšējiem importiem ir biežākais klupšanas akmens, jo pati lietojumprogramma tos parasti neizmanto, bet atkarības to dara.

Node.js 26 modulu versija ir 147 (NODE_MODULE_VERSION), tāpēc visas dzimtā koda paketes ar C++ saistījumiem jāpārkompilē. Ja projekts izmanto node-gyp vai prebuilt binārus, tie jāatjaunina uz 26 saderīgiem laidieniem, citādi require met ABI neatbilstības kļūdu.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie