#backEnd #NodeJS
Релиз Node.js 16
20 апреля состоялся релиз новой 16 версии Node.js. Среди основных изменений обновление движка JavaScript V8 до версии 9.0, встроенные бинарники (двоичные файлы) для Apple Silicon и несколько API, но обо всем по порядку.
Из основных изменений движка можно назвать поддержку индексов соответствия в регулярных выражениях (regexp match indices), а также улучшение (повышение скорости) доступа к свойству «super».
Идексы соответствия позволяют разработчикам получать массив подмассивов, содержащих начальные и конечные позиции (индексы) групп захвата (capture groups) в регулярном выражении при наличии совпадения (или нескольких совпадений). Данный массив доступен через свойство «indices» объекта с совпадениями. Обратите внимание, что регулярное выражение, используемое для поиска совпадений, должно иметь флаг «/d».
Timers Promises API предоставляет альтернативный набор таймеров, возвращающих объект «Promise», что избавляет от необходимости использования util.promisify().
Релиз 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Доступ к свойству «super» был улучшен за счет использования системы встроенного кэша и оптимизации генерации кода в «TurboFan» (TurboFan — это компилятор, за интепретацию кода в V8 отвечает Ignition). Как утверждают разработчики V8, скорость доступа к super стала почти такой же, как скорость доступа к обычному свойству.
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]
Timers Promises API предоставляет альтернативный набор таймеров, возвращающих объект «Promise», что избавляет от необходимости использования util.promisify().
import { setTimeout } from 'timers/promises'Timers Promises API был представлен в Node.js 15 в качестве экспериментальной возможности. Теперь он приобрел статус стабильного интерфейса.
async function run() {
const greet = await setTimeout(3000, 'Hi!')
console.log(greet) // Hi!
}
run()