Sunucu taraflı JavaScript Node.js 16.0 sürümü

Состоялся релиз 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 дней.

Ana iyileştirmeler:

  • Движок 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 platformunun hem Web uygulamalarının sunucu tarafı desteği için hem de sıradan istemci ve sunucu ağ programlarının oluşturulması için kullanılabileceğini hatırlatalım. Node.js uygulamalarının işlevselliğini genişletmek için, HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 sunucuları ve istemcilerinin uygulamalı modüllerini, entegrasyon modüllerini bulabileceğiniz geniş bir modül koleksiyonu hazırlanmıştır. çeşitli web çerçeveleri, WebSocket ve Ajax işleyicileri, DBMS bağlayıcıları (MySQL, PostgreSQL, SQLite, MongoDB), şablon motorları, CSS motorları, şifreleme algoritmalarının ve yetkilendirme sistemlerinin (OAuth) uygulamaları, XML ayrıştırıcıları.

Node.js, çok sayıda paralel isteğin işlenmesini sağlamak için engellemeyen olay işlemeye ve geri arama işleyicilerinin tanımına dayalı eşzamansız bir kod yürütme modeli kullanır. Bağlantıları çoğaltmak için desteklenen yöntemler epoll, kqueue, /dev/poll ve select'tir. Bağlantı çoğullama için Unix sistemlerde libev ve Windows üzerinde IOCP için bir eklenti olan libuv kitaplığı kullanılır. libeio kitaplığı bir iş parçacığı havuzu oluşturmak için kullanılır ve c-ares, engellemesiz modda DNS sorguları gerçekleştirmek için entegre edilmiştir. Engellemeye neden olan tüm sistem çağrıları, iş parçacığı havuzunda yürütülür ve ardından, sinyal işleyiciler gibi, çalışmalarının sonucunu adsız bir kanal (boru) aracılığıyla geri aktarır. JavaScript kodunun yürütülmesi, Google tarafından geliştirilen V8 motorunun kullanılmasıyla sağlanır (ayrıca Microsoft, Chakra-Core motoruyla Node.js'nin bir sürümünü geliştirmektedir).

Node.js özünde Perl AnyEvent, Ruby Event Machine, Python Twisted çerçeveleri ve Tcl olay uygulamasına benzer, ancak Node.js'deki olay döngüsü geliştiriciden gizlenir ve çalışan bir web uygulamasındaki olay işlemeye benzer. tarayıcıda. node.js için uygulama yazarken, örneğin "var result = db.query("select..");" yapmak yerine olay güdümlü programlamanın özelliklerini göz önünde bulundurmanız gerekir. işin tamamlanmasını ve ardından sonuçların işlenmesini bekleyen Node.js, eşzamansız yürütme ilkesini kullanır, yani. kod "db.query("select..", function (result) {sonuç işleme});" biçimine dönüştürülür, burada denetim anında diğer koda geçer ve veri geldikçe sorgu sonucu işlenir.

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

Kaynak: opennet.ru

Yorum ekle