Source Code
197 subscribers
30 photos
3 files
80 links
Download Telegram
#backEnd #NodeJS

Релиз Node.js 16

20 апреля состоялся релиз новой 16 версии Node.js. Среди основных изменений обновление движка JavaScript V8 до версии 9.0, встроенные бинарники (двоичные файлы) для Apple Silicon и несколько API, но обо всем по порядку.

Из основных изменений движка можно назвать поддержку индексов соответствия в регулярных выражениях (regexp match indices), а также улучшение (повышение скорости) доступа к свойству «super».

Идексы соответствия позволяют разработчикам получать массив подмассивов, содержащих начальные и конечные позиции (индексы) групп захвата (capture groups) в регулярном выражении при наличии совпадения (или нескольких совпадений). Данный массив доступен через свойство «indices» объекта с совпадениями. Обратите внимание, что регулярное выражение, используемое для поиска совпадений, должно иметь флаг «/d».

const re = /(a)(b)/d // Регулярное выражение. Обратите внимание на наличие флага /d

const m = re.exec('ab') // Объект с совпадениями

console.log(m.indices[0]) // Первый подмассив — это полное совпадение

// [0, 2]

console.log(m.indices[1]) // Второй подмассив — первая группа захвата

// [0, 1]

console.log(m.indices[2]) // Третий подмассив — вторая группа захвата

// [1, 2]

Доступ к свойству «super» был улучшен за счет использования системы встроенного кэша и оптимизации генерации кода в «TurboFan» (TurboFan — это компилятор, за интепретацию кода в V8 отвечает Ignition). Как утверждают разработчики V8, скорость доступа к super стала почти такой же, как скорость доступа к обычному свойству.

Timers Promises API предоставляет альтернативный набор таймеров, возвращающих объект «Promise», что избавляет от необходимости использования util.promisify().

import { setTimeout } from 'timers/promises'

async function run() {

const greet = await setTimeout(3000, 'Hi!')

console.log(greet) // Hi!

}

run()

Timers Promises API был представлен в Node.js 15 в качестве экспериментальной возможности. Теперь он приобрел статус стабильного интерфейса.