Издање ЈаваСцрипт платформе на страни сервера Ноде.јс 16.0

Состоялся релиз Node.js 16.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 16.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 16.0 будет осуществляться до апреля 2023 года. Сопровождение прошлой LTS-ветки Node.js 14.0 продлится до апреля 2023 года, а позапрошлой LTS-ветки 12.0 до апреля 2022 года. Сопровождение LTS-ветки 10.0 будет прекращено через 10 дней.

Главна побољшања:

  • Движок V8 обновлён до версии 9.0 (в Node.js 15 использовался выпуск 8.6), что позволило реализовать в Node.js 16 такие возможности, как свойство «indices» для регулярных выражений (включает массив с начальными и конечными позициями групп совпадений), метод Atomics.waitAsync (асинхронная версия Atomics.wait), поддержка использования ключевого слова await в модулях на верхнем уровне. Ускорен вызов функций, в ситуации, когда число переданных аргументов не соответствует определённым в функции параметрам.
  • Стабилизирован API Timers Promises, предоставляющий альтернативный набор функций для работы с таймером, возвращающих на выходе объекты Promise, что позволяет обойтись без использования util.promisify(). import { setTimeout } from ‘timers/promises’; async function run() { await setTimeout(5000); console.log(‘Hello, World!’); } run();
  • Добавлена экспериментальная реализация API Web Crypto, предназначенного для выполнения базовых криптографических операций на стороне web-приложений, таких как манипуляции с криптографическими хэшами, генерация и проверка цифровых подписей, кодирование и декодирования данных с использованием различных методов шифрования, формирование криптографически надёжных случайных чисел. В API также предусмотрены функции для генерации ключей и управления ими.
  • N-API (API для разработки дополнений) обновлён до версии 8.
  • Осуществлён переход на новый выпуск пакетного менеджера NPM 7.10.
  • Стабилизирована реализация класса AbortController, основанного на Web API AbortController и позволяющего отменять сигналы в выбранных API на основе Promise.
  • Стабилизирована поддержка третьей версии формата Source Map, используемого для сопоставления сгенерированных, обработанных или упакованных модулей с оригинальным исходным кодом.
  • Для совместимости с устаревшими Web API добавлены методы buffer.atob(data) и buffer.btoa(data).
  • Началось формирование сборок для новых устройств Apple, оснащённых ARM-чипом M1.
  • На платформе Linux требования к версии компилятора подняты до GCC 8.3.

Подсетимо се да платформа Ноде.јс може да се користи како за подршку веб апликација на страни сервера, тако и за креирање обичних клијентских и серверских мрежних програма. За проширење функционалности апликација за Ноде.јс, припремљена је велика колекција модула у којој се могу пронаћи модули са имплементацијом ХТТП, СМТП, КСМПП, ДНС, ФТП, ИМАП, ПОП3 сервера и клијената, модули за интеграцију са различитим веб оквирима, ВебСоцкет и Ајак руковаоцима, конекторима за ДБМС (МиСКЛ, ПостгреСКЛ, СКЛите, МонгоДБ), шаблонским машинама, ЦСС машинама, имплементацијама криптографских алгоритама и система ауторизације (ОАутх), КСМЛ парсерима.

Да би обезбедио обраду великог броја паралелних захтева, Ноде.јс користи модел извршавања асинхроног кода заснован на руковању неблокирајућим догађајима и дефиницији руковалаца повратним позивима. Подржане методе за мултиплексирање веза су еполл, ккуеуе, /дев/полл и селецт. За мултиплексирање везе користи се библиотека либув, која је додатак за либев на Уник системима и ИОЦП на Виндовс-у. Библиотека либеио се користи за креирање скупа нити, а ц-арес је интегрисан за обављање ДНС упита у режиму без блокирања. Сви системски позиви који узрокују блокирање се извршавају унутар скупа нити, а затим, као руковаоци сигнала, преносе резултат свог рада назад кроз неименовану цев (цев). Извршење ЈаваСцрипт кода је обезбеђено коришћењем В8 мотора који је развио Гоогле (поред тога, Мицрософт развија верзију Ноде.јс са Цхакра-Цоре мотором).

У својој сржи, Ноде.јс је сличан Перл АниЕвент, Руби Евент Мацхине, Питхон Твистед оквирима и имплементацији догађаја Тцл, али је петља догађаја у Ноде.јс скривена од програмера и подсећа на руковање догађајима у веб апликацији која ради у претраживачу. Када пишете апликације за ноде.јс, потребно је да узмете у обзир специфичности програмирања заснованог на догађајима, на пример, уместо да радите „вар ресулт = дб.куери("селецт..");" са чекањем завршетка рада и накнадном обрадом резултата, Ноде.јс користи принцип асинхроног извршавања, тј. код се трансформише у "дб.куери("селецт..", фунцтион (ресулт) {ресулт процессинг});", у коме ће контрола тренутно прећи на даљи код, а резултат упита ће бити обрађен како подаци стигну.

Дополнительно можно отметить, что компания Deno, основанная создателем Node.js для развития платформы нового поколения Deno, получила 4.9 млн долларов инвестиций. По своему назначению Deno напоминает Node.js, но пытается устранить концептуальные ошибки, допущенные в архитектуре Node.js, и предоставить пользователям более защищённое окружение. Отмечается, что бизнес-решения компании Deno будут строится на полностью открытых продуктах, а модель Open Core с выделением отдельной платной функциональности воспринимается как неприемлемая для платформы Deno.

Извор: опеннет.ру

Додај коментар