სერვერის მხარეს 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 ბიბლიოთეკა გამოიყენება thread pool-ის შესაქმნელად, ხოლო c-ares ინტეგრირებულია DNS მოთხოვნების შესასრულებლად არადაბლოკვის რეჟიმში. ყველა სისტემური ზარი, რომელიც იწვევს დაბლოკვას, შესრულებულია ძაფის აუზის შიგნით და შემდეგ, სიგნალის დამმუშავებლების მსგავსად, მათი მუშაობის შედეგი უკან გადააქვს უსახელო მილის (მილის) მეშვეობით. JavaScript კოდის შესრულება უზრუნველყოფილია Google-ის მიერ შემუშავებული V8 ძრავის გამოყენებით (გარდა ამისა, Microsoft ავითარებს Node.js-ის ვერსიას Chakra-Core ძრავით).

თავის არსში, Node.js მსგავსია Perl AnyEvent, Ruby Event Machine, Python Twisted Frameworks და 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

ახალი კომენტარის დამატება