Cyber News

Node.js 26.5.0: импорт текста как модулей, потоковый Blob и пост-квантовый TLS

M
Markabus
·13 июля 2026 г.
Тёмная графитовая сцена: голографический интерфейс кода, где текстовый документ превращается в поток JavaScript-модуля, на фоне узловая сеть рантайма; синий — только акцент

Проект Node.js выпустил версию 26.5.0 — очередной релиз «текущей» ветки (Current — ветка, где обкатываются новые возможности перед долгосрочной поддержкой). На первый взгляд это рядовое минорное обновление, но под капотом собрано сразу несколько давно ожидаемых вещей: импорт текстовых файлов напрямую как модулей, потоковое чтение объектов Blob, штатное раздвоение потоков и наблюдаемость пост-квантового TLS. Разберёмся, что именно поменялось и почему на это стоит обратить внимание.

Что за релиз и почему он важен

Версия 26.5.0 вышла 8 июля 2026 года под управлением релиз-менеджера Ричарда Лау (Richard Lau). Это ветка Current: в ней Node.js обкатывает свежие API, прежде чем «заморозить» их в LTS (Long-Term Support — версия с долгосрочной поддержкой, которую принято ставить в продакшн). По графику проекта чётные мажорные версии со временем переходят в статус LTS, и Node.js 26 должен получить его уже в октябре 2026-го. Иными словами, возможности, которые появляются сейчас, совсем скоро окажутся в версии, рекомендованной для промышленной эксплуатации, — поэтому знакомиться с ними имеет смысл заранее.

Отдельно в релизе отмечена смена подписанта сборок: артефакты будущих версий теперь заверяются ключом Стюарта Эддисона (Stewart X Addison). Деталь техническая, но важная для тех, кто проверяет цифровые подписи пакетов на этапе сборки и в защищённых пайплайнах.

Импорт текстовых файлов как модулей

Самая заметная новинка — экспериментальный флаг --experimental-import-text. Он разрешает импортировать обычный текстовый файл прямо в ES-модуль и получать его содержимое как строку, без обращения к файловой системе в рантайме:

// запуск: node --experimental-import-text app.mjs
import readme from './readme.txt' with { type: 'text' };

console.log(readme); // содержимое файла как обычная строка

Синтаксис повторяет уже привычный импорт JSON через «атрибуты импорта» (import attributes) — конструкцию with { type: '...' }. Раньше, чтобы подтянуть в код SQL-запрос, шаблон письма, GraphQL-схему или лицензию, приходилось вызывать fs.readFile и вручную разбираться с путями и асинхронностью. Теперь текст становится частью графа модулей: его видно сборщику, он резолвится по тем же правилам, что и остальные импорты, и доступен синхронно на верхнем уровне модуля.

Важная оговорка: возможность намеренно оставлена экспериментальной. Один из мейнтейнеров, Джеффри Бут (Geoffrey Booth), настоял держать её под флагом, пока не устоятся совместимость с браузерами и поведение в npm-пакетах — это соответствует практике TC39 (комитет, стандартизирующий JavaScript). Поэтому в продакшене на неё пока полагаться рано, но попробовать в инструментах и прототипах уже можно.

Потоковое чтение Blob: textStream()

Второе нововведение — метод Blob.prototype.textStream(), который возвращает ReadableStream<string>, то есть поток уже декодированных из UTF-8 строковых фрагментов. До сих пор у Blob были методы text() и arrayBuffer(), но оба загружают всё содержимое в память целиком. Для больших файлов это дорого и рискованно.

const blob = await fetch('/big-log.txt').then(r => r.blob());

for await (const chunk of blob.textStream()) {
  // обрабатываем текст по кускам, не держа весь файл в памяти
  process(chunk);
}

На практике это упрощает потоковую обработку журналов, выгрузок и пользовательских загрузок: можно читать и парсить данные по мере поступления, а не после полной загрузки. Автор изменения — Мэтью Эйткен (Matthew Aitken).

ReadableStream.tee(): раздвоение потока из коробки

Node.js теперь штатно отдаёт функцию ReadableStream.tee() из стандарта WHATWG Streams. Она «раздваивает» один читаемый поток на два независимых, каждый из которых можно потреблять отдельно. Классический сценарий — прочитать данные один раз, но пустить их сразу по двум маршрутам: например, одновременно считать хеш файла и записать его в хранилище, или залогировать сырой ответ и тут же его распарсить.

const [a, b] = readable.tee();
// a — считаем контрольную сумму
// b — пишем в файл, оба потока независимы

Раньше подобное приходилось собирать вручную или тянуть сторонние зависимости. Теперь поведение соответствует спецификации и работает так же, как в браузере. Изменение внёс Маттео Коллина (Matteo Collina), один из ключевых мейнтейнеров ядра.

Пост-квантовый TLS стал наблюдаемым

Метод tlsSocket.getEphemeralKeyInfo() теперь сообщает, какая именно группа ключевого обмена (TLS group) была согласована при рукопожатии, — включая пост-квантовые варианты вроде ML-KEM и гибридные схемы. Пост-квантовая криптография (устойчивая к атакам будущих квантовых компьютеров) постепенно приходит в TLS, и до сих пор проверить из кода, что соединение действительно использует квантово-устойчивый обмен ключами, было непросто.

Теперь это делается штатно: приложение или система мониторинга может убедиться, что защищённые соединения переходят на новые алгоритмы, и вовремя заметить, если клиент или сервер откатились на классический обмен. Для команд, которые уже планируют миграцию инфраструктуры на пост-квантовые протоколы, это конкретный инструмент контроля. Автор — Филип Скокан (Filip Skokan).

Точные метрики цикла событий

Функция monitorEventLoopDelay() получила опцию samplePerIteration. Раньше задержку цикла событий (event loop — механизм, обрабатывающий асинхронные задачи в Node.js) измеряли по таймеру, что давало приближённую картину. Новый режим снимает реальные показания libuv на каждой итерации цикла, а не через фиксированные интервалы.

Для диагностики это ощутимая разница: всплески задержек, из-за которых сервис «подтормаживает» под нагрузкой, теперь видно точнее, и их проще привязать к конкретным участкам кода. Изменение предложил Пабло Эрхард (Pablo Erhard).

Что ускорили под капотом

Помимо новых API, релиз заметно оптимизирует внутреннюю кухню. Метод TextEncoder.encode() перестал копировать исходную строку — это снижает нагрузку на память и ускоряет кодирование, особенно на «горячих» путях обработки текста (автор — Ягыз Низипли, Yagiz Nizipli). Реализация WHATWG-потоков уменьшила накладные расходы на каждый чанк. А REPL (интерактивная консоль Node.js) стал стартовать быстрее за счёт ленивой загрузки парсера acorn и отложенного создания контекста виртуальной машины (Дайдзиро Ваки, Daijiro Wachi).

Вошли и штатные исправления безопасности и стабильности — в частности, в криптографии (валидация больших генераторов Диффи — Хеллмана и проверка точек EdDSA) и в обработке сигналов прерывания у потоков.

Стоит ли обновляться

Node.js 26.5.0 — релиз ветки Current, поэтому у него две аудитории. Тем, кто разрабатывает инструменты, экспериментирует с потоками и хочет пораньше пощупать импорт текста, обновление даёт заметный набор удобств прямо сейчас. Тем, кто держит продакшен на текущем LTS (сейчас это линейка Node.js 24), спешить необязательно: экспериментальные флаги ещё могут поменять поведение, а сама ветка станет LTS только к октябрю. Разумная стратегия — обкатать новинки в тестовом окружении и на CI, чтобы к моменту перехода 26-й версии в LTS уже понимать, какие из возможностей вы готовы включить в боевую сборку.

Частые вопросы

Q.Когда Node.js 26 станет LTS?

По графику проекта Node.js 26 (чётная мажорная версия) должен перейти в статус LTS в октябре 2026 года. До этого момента 26.x — это ветка Current, где обкатываются новые API. Текущий LTS на момент выхода 26.5.0 — линейка Node.js 24.

Q.Как включить импорт текстовых файлов?

Нужно запустить Node.js с экспериментальным флагом --experimental-import-text, после чего .txt-файл можно импортировать через синтаксис атрибутов импорта: import readme from './readme.txt' with { type: 'text' }. Возможность экспериментальная и в продакшене пока не рекомендуется.

Q.Чем textStream() лучше метода text() у Blob?

Метод text() загружает всё содержимое Blob в память целиком, а textStream() возвращает ReadableStream строк и позволяет читать данные по частям. Для больших файлов это снижает потребление памяти и даёт возможность обрабатывать текст по мере поступления.

Q.Зачем нужен отчёт о TLS-группе в getEphemeralKeyInfo()?

Он показывает, какая группа ключевого обмена согласована при TLS-рукопожатии, включая пост-квантовые ML-KEM и гибридные схемы. Это позволяет из кода или мониторинга убедиться, что соединения используют квантово-устойчивый обмен ключами, и заметить откат на классические алгоритмы.

Источники

Предыдущая
JADEPUFFER: первый ransomware, который целиком провёл ИИ-агент
Следующая
NVIDIA Vera Rubin: первые поставки ускорителей нового поколения

Читайте также

Фотореалистичный кадр коридора дата-центра: ряды серверных стоек с патч-кордами, зелёными индикаторами и синей подсветкой; в углу пометка «Иллюстрация · изображение сгенерировано ИИ» — к новости о покупке Anyscale британским ИИ-облаком NscaleCyber News
2 августа 2026 г.

Nscale покупает Anyscale за $1,65 млрд: создатель Ray уходит к британскому ИИ-облаку ради «полного стека»

Британское ИИ-облако Nscale покупает Anyscale — создателя открытого фреймворка Ray — примерно за $1,65 млрд и строит вертикально интегрированный «полный стек». Разбираем, что это значит для рынка и что будет с Ray.

Читать →
Фотореалистичный макрокадр крупного чипа-ускорителя на серверной плате с конденсаторами, шлейфами и синей подсветкой, на фоне размытых стоек дата-центра; в углу пометка «Иллюстрация · изображение не отражает реальный продукт» — к новости о заказных ИИ-ASIC MediaTek для дата-центровCyber News
2 августа 2026 г.

MediaTek уходит в дата-центры: $5 млрд на кастомные ИИ-ускорители и первый ASIC в серии уже в Q4 2026

На отчёте за Q2 2026 MediaTek объявила разворот в дата-центры: бюджет $5 млрд на мощности, первый кастомный ИИ-ASIC в серию уже в четвёртом квартале и цель — 15–20% рынка ускорителей к 2027 году. Разбираем, что стоит за ставкой и почему она важна.

Читать →
Профессиональный студийный микрофон крупным планом на столе звукорежиссёра; за ним монитор со светящейся электрик-синей аудиоволной и спектрограммой голоса, рядом наушники и смартфон в мягком расфокусе — фотореалистичная сцена без людей.Cyber News
31 июля 2026 г.

Grok Voice Think Fast 2.0: xAI ускорила голосового ИИ‑агента до 0,7 секунды и удешевила минуту разговора

29 июля xAI представила Grok Voice Think Fast 2.0 — голосовую модель «речь-в-речь», которая рассуждает параллельно с речью, отвечает за 0,7 секунды и стоит около $0,08 за минуту. Разбираем ключевые изменения, бенчмарки и что это значит для голосовых ассистентов в бизнесе.

Читать →