Phát hành nền tảng JavaScript phía máy chủ 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 дней.

Cải tiến chính:

  • Движок 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.

Chúng ta hãy nhớ lại rằng nền tảng Node.js có thể được sử dụng cho cả mục đích hỗ trợ phía máy chủ cho các ứng dụng Web và để tạo các chương trình mạng máy chủ và máy khách thông thường. Để mở rộng chức năng của các ứng dụng cho Node.js, một bộ sưu tập lớn các mô-đun đã được chuẩn bị, trong đó bạn có thể tìm thấy các mô-đun triển khai các máy chủ và máy khách HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, các mô-đun để tích hợp với nhiều khung web, trình xử lý WebSocket và Ajax khác nhau, trình kết nối với DBMS (MySQL, PostgreSQL, SQLite, MongoDB), công cụ tạo mẫu, công cụ CSS, triển khai thuật toán mật mã và hệ thống ủy quyền (OAuth), trình phân tích cú pháp XML.

Để đảm bảo xử lý một số lượng lớn các yêu cầu song song, Node.js sử dụng mô hình thực thi mã không đồng bộ dựa trên xử lý sự kiện không chặn và định nghĩa về trình xử lý gọi lại. Các phương thức được hỗ trợ cho kết nối ghép kênh là epoll, kqueue, /dev/poll và select. Để ghép kênh kết nối, thư viện libuv được sử dụng, đây là tiện ích bổ sung cho libev trên hệ thống Unix và IOCP trên Windows. Thư viện libeio được sử dụng để tạo nhóm luồng và c-ares được tích hợp để thực hiện các truy vấn DNS ở chế độ không chặn. Tất cả các cuộc gọi hệ thống gây ra chặn được thực thi bên trong nhóm luồng và sau đó, giống như các bộ xử lý tín hiệu, chuyển kết quả công việc của chúng trở lại thông qua một đường ống (pipe) không tên. Việc thực thi mã JavaScript được cung cấp thông qua việc sử dụng công cụ V8 do Google phát triển (ngoài ra, Microsoft đang phát triển phiên bản Node.js với công cụ Chakra-Core).

Về cốt lõi, Node.js tương tự như các khung công tác Perl AnyEvent, Ruby Event Machine, Python Twisted và triển khai sự kiện Tcl, nhưng vòng lặp sự kiện trong Node.js bị ẩn khỏi nhà phát triển và giống như xử lý sự kiện trong ứng dụng web đang chạy trong trình duyệt. Ví dụ: khi viết ứng dụng cho node.js, bạn cần xem xét các chi tiết cụ thể của lập trình hướng sự kiện, thay vì thực hiện "var result = db.query("select..");" với việc chờ hoàn thành công việc và xử lý kết quả sau đó, Node.js sử dụng nguyên tắc thực thi không đồng bộ, tức là mã được chuyển đổi thành "db.query("select..", function (result) {result processing});", trong đó kiểm soát sẽ ngay lập tức chuyển sang mã tiếp theo và kết quả truy vấn sẽ được xử lý khi dữ liệu đến.

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

Nguồn: opennet.ru

Thêm một lời nhận xét