Выпуск серверной JavaScript-платформы Node.js 13.0

Материал из Викиновостей, свободного источника новостей

24 октября 2019 года

Доступен релиз Node.js 13.0, платформы для выполнения сетевых приложений на языке JavaScript. Одновременно завершена стабилизация прошлой ветки Node.js 12.x, которая переведена в категорию выпусков с длительным сроком поддержки, обновления для которых выпускаются в течение 4 лет. Поддержка прошлой LTS-ветки Node.js 10.0 продлится до апреля 2021 года, а позапрошлой LTS-ветки 8.0 до января 2020 года.

Основные улучшения:

  • Движок V8 обновлён до версии 7.8, в которой задействованы новые методы оптимизации производительности, улучшена деструктуризация объектов, уменьшено потребление памяти и сокращено время подготовки к выполнению WebAssembly;
  • По умолчанию включена полная поддержка интернационализации и Unicode на базе библиотек ICU (International Components for Unicode), позволяющая разработчикам писать код, поддерживающий работу с разными языками и локалями. Модуль full-icu теперь установлен по умолчанию;
  • Стабилизирован API Workers Threads, позволяющий создавать многопоточные циклы обработки событий (event loop). Реализация основана на модуле worker_threads, позволяющем запускать JavaScript-код в несколько параллельных потоков. Стабильная поддержка API Workers Threads также бэкепортирована в LTS-ветку Node.js 12.x;
  • Повышены требования к платформам. Для сборки теперь требуется как минимум macOS 10.11 (требуется Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Улучшена поддержка Python 3. При наличии в системе Python 2 и Python 3, по-прежнему используется Python 2, но добавлена возможность сборки при наличии в системе только Python 3;
  • Удалена старая реализация HTTP-парсера ("--http-parser=legacy"). Удалены или переведены в разряд устаревших вызовы и свойства FSWatcher.prototype.start(), ChildProcess._channel, метод open() в объектах ReadStream и WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • Следом вышло обновление 13.0.1, в котором по горячим следам устранено несколько ошибок. В том числе решена проблема с выводом в npm 6.12.0 предупреждения об использовании неподдерживаемой версии.

Напомним, что платформа Node.js может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core).

По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. .

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Выпуск серверной JavaScript-платформы Node.js 13.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.