Издание на JavaScript Node.js 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.

Потсетиме дека платформата Node.js може да се користи и за серверско одржување на веб-апликации и за креирање обични мрежни програми за клиент и сервер. За проширување на функционалноста на апликациите за Node.js, подготвена е голема колекција на модули, во кои можете да најдете модули со имплементација на HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 сервери и клиенти, модули за интеграција со различни веб-рамки, WebSocket и Ajax управувачи, DBMS конектори (MySQL, PostgreSQL, SQLite, MongoDB), мотори за шаблони, CSS мотори, имплементации на крипто алгоритми и системи за авторизација (OAuth), XML парсери.

За да се обезбеди обработка на голем број паралелни барања, Node.js користи асинхрон модел за извршување код базиран на неблокирачко справување со настани и дефиниција за ракувачи со повратен повик. Поддржани методи за мултиплексирање конекции се epoll, kqueue, /dev/poll и select. За мултиплексирање на поврзување, се користи библиотеката libuv, која е додаток за libev на Unix системите и IOCP на Windows. Библиотеката libeio се користи за создавање на базен на нишки, а c-ares е интегриран за извршување на барања за DNS во режим без блокирање. Сите системски повици кои предизвикуваат блокирање се извршуваат внатре во базенот на нишки и потоа, како ракувачи со сигнали, го пренесуваат резултатот од нивната работа назад преку неименувана цевка (цевка). Извршувањето на JavaScript кодот е обезбедено преку употреба на моторот V8 развиен од Google (покрај тоа, Microsoft развива верзија на Node.js со моторот Chakra-Core).

Во неговото јадро, Node.js е сличен на Perl AnyEvent, Ruby Event Machine, Python Twisted рамки и имплементацијата на настанот Tcl, но циклусот на настани во Node.js е скриен од развивачот и наликува на справување со настани во веб-апликација која работи во прелистувачот. Кога пишувате апликации за node.js, треба да ги земете предвид спецификите на програмирањето управувано од настани, на пример, наместо да правите "var result = db.query("select..");" со чекање за завршување на работата и последователна обработка на резултатите, Node.js го користи принципот на асинхроно извршување, т.е. кодот се трансформира во „db.query („избери..“, функција (резултат) {обработка на резултат});“, во која контролата веднаш ќе премине на понатамошниот код, а резултатот од барањето ќе се обработува како што пристигнуваат податоците.

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

Извор: opennet.ru

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