Node.js 20 тепер доступний!

Оголошено про випуск Node.js 20! Основні моменти включають нову модель дозволів Node.js, синхронний import.meta.resolve, стабільний test_runner, оновлення механізму JavaScript V8 до 11.3, Ada до 2.0 тощо!

Проект продовжує розвиватися в багатьох сферах, з багатьма новими функціями та виправленнями, що входять до існуючих випусків LTS. З цієї причини зміни, описані в журналі змін для Node.js 20, представляють лише невелику частину функцій і працюють з останнього великого випуску.

Node.js 20 отримає довгострокову підтримку (LTS) у жовтні 2023 року, але до того часу він буде «Поточним» випуском протягом наступних шести місяців. Ми заохочуємо вас ознайомитися з новими функціями та перевагами цього останнього випуску та оцінити їхній потенційний вплив на ваші програми.

Помітні зміни

Модель дозволу

Модель дозволів Node.js — це експериментальний механізм для обмеження доступу до певних ресурсів під час виконання.

У цьому першому випуску, що містить модель дозволів, функції мають такі можливості:

  • Обмеження доступу до файлової системи (читання та запис)
  • Обмежити доступ доchild_process
  • Обмежити доступ доworker_threads
  • Обмежити доступ до власних аддонів (те саме, що --no-addonsпрапорець)

Доступні дозволи задокументовані прапором --experimental-permission.

Під час запуску Node.js за допомогою --experimental-permissionможливості доступу до файлової системи, процесів породження та використання node:worker_threadsбуде обмежено.

Розробники, які використовують Node.js, тепер мають більше контролю над доступом до файлової системи завдяки введенню прапорців --allow-fs-readі --allow-fs-write. Ці експериментальні функції дозволяють більш детально контролювати, до яких частин файлової системи можуть отримати доступ процеси Node.js.

Щоб увімкнути ці прапорці, розробники можуть використовувати --experimental-permissionпрапор разом із потрібними дозволами. Наприклад, виконання наступної команди дозволяє як читати, так і записувати доступ до всієї файлової системи:

Розробники також можуть вказати конкретні шляхи для доступу до файлової системи, передаючи значення, розділені комами, до прапорців. Наприклад, наступна команда дозволяє записувати доступ до /tmp/папки:

Шаблони підстановок також можна використовувати для надання доступу до кількох файлів або папок одночасно. Наприклад, наступна команда дозволяє читати всі файли та папки в каталозі /home/, які починаються з test:

Коли модель дозволів увімкнено, нову permissionвластивість об’єкта processможна використовувати для перевірки, чи надано певний дозвіл під час виконання.

Важливо зазначити, що ці функції все ще є експериментальними та можуть змінитися в майбутніх випусках Node.js

Кастомні хуки ESM наближаються до стабільності

Кастомні хуки життєвого циклу модуля ES, які надаються через завантажувачі ( --experimental-loader=./foo.mjs), тепер виконуються у виділеному потоці, ізольованому від основного. Це забезпечує окрему область видимості для завантажувачів і гарантує відсутність перекрестного впливу між завантажувачами та кодом додатків.

У відповідності з поведінкою браузера import.meta.resolve()тепер повертається синхронно; зауважте, що resolveхуки в користувальницьких завантажувачах можуть залишатися асинхронними, якщо цього бажає автор завантажувача, і import.meta.resolveвсе одно повертатимуться синхронно в коді програми.

Ці зміни були останніми незавершеними елементами перед позначенням завантажувачів ESM як стабільних. Через деякий час є наміри позначити прапорець завантажувачів import.meta.resolveі хуки resolve таloadяк стабільні. Це має сприяти більш широкому застосуванню ESM.

V8 11.3

Як зазвичай, нова версія двигуна V8 включена в Node.js (оновлена ​​до версії 11.3, яка є частиною Chromium 113), що забезпечує покращену продуктивність і нові мовні функції

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *