Издадена платформа Node.js 23.0 с начален suporte на езика TypeScript

Състоянието на Node.js 23.0.0, платформа за изпълнение на мрежови приложения на JavaScript, беше пуснато. Node.js 23.0 е класифициран като междинна версия, която ще се поддържа за период от 7 месеца (до юни 2025 г.). В близките дни ще бъде завършено стабилизирането на Node.js 22, което на 29 октомври ще получи статут LTS и ще се поддържа до април 2027 г. Поддръжката на предишните LTS версии Node.js 20.x и 18.x ще продължи до април 2026 и 2025 г. съответно.

Основни подобрения:

  • Добавена е експериментална поддръжка на езика TypeScript, позволяващ явното определяне на типове. Поддръжката се активира с опции '—experimental-strip-types' и '—experimental-transform-types'. При първата опция работата с TypeScript се свежда до почистването на специфичните за езика определения на типове (проверка на типове не се извършва, а кодът просто се приведен в JavaScript формат без типове). Втората опция преобразува определени елементи от синтаксиса на TypeScript, например, изброявания (enum) и пространства от имена (namespace), в JavaScript код.
  • По подразбиране е активирана възможността за използване на извикването 'require()' за зареждане на JavaScript модули ESM (ECMAScript Modules) в синхронен режим. ESM модулите са предназначени за браузъри и заменят CommonJS модулите, специфични за Node.js. За зареждане чрез 'require()' в Node.js, ESM модулът трябва да се изпълнява в синхронен режим (без await на горно ниво).
  • Осигурено е автоматично разпознаване на ESM модулите в файлове без разширение или с разширение '.js'. По-рано подобни файлове се третираха като CommonJS модули, освен ако в съществуващия в същата директория файл package.json не беше посочен типът им ('type': 'module'). В новата версия, за файлове, чиито тип не е обозначен в package.json, първо се опитва зареждане като CommonJS модул, а ако това не успее, като ESM модул.
  • Добавена е експериментална реализация съвместимо с браузъри API Web Storage, предназначено за постоянно (клас localStorage) или временно (клас sessionStorage) съхранение на данни в формат ключ/стойност. За активиране на поддръжката на Web Storage е необходимо стартиране с флага '—experimental-webstorage' и указание на пътя до файла с хранилището чрез флага '—localstorage-file'.
  • Добавен експериментален API SQLite за работа с бази данни, използващи SQL език за заявки и хранилище на база библиотеката SQLite. Освен съхраняване на базата данни в файл на диска, тя също може да бъде разположена в паметта, като се укаже вместо името на файла «:memory:». По-горе споменатата API Web Storage е реализирана и върху SQLite, което доведе до добавяне на SQLite в зависимостите за Node.js.
  • Обявена е стабилната команда «node —run», предназначена за стартиране на скриптове, определени в файла package.json.
  • Реализирана е опционална поддръжка за кеширане на компилирания код на диска за значително ускоряване на стартирането на модулите. Включването на кеширането става чрез променлива на средата NODE_COMPILE_CACHE. По своята същност възможността наподобява пакета v8-compile-cache, но се отличава с по-висока производителност и поддръжка на ESM модули.
  • Оптимизиран е обектът Buffer, което значително увеличи производителността на методите Buffer.copy() и Buffer.write().
  • Повишена е производителността на модула node:fs, в който също е намален броят на повикванията към C++ кода по време на работа.
  • Двигателят V8 е обновен до версия 12.9, използвана в Chromium 129.
  • Отстранена е поддръжката на 32-битови системи с ОС Windows.
  • Поради внедряването на възможности в Node.js и двигател V8, определени в стандарта C++20, се повишиха изискванията към версията на компилатора GCC. За изграждането на Node.js вече е необходима минимум версия GCC 12.

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

За осигуряване на обработка на голям брой паралелни заявки Node.js използва асинхронен модел за стартиране на кода, основан на обработка на събития в неблокиращ режим и определяне на callback обработчици. Като методи за мултиплексиране на връзките се поддържат такива като epoll, kqueue, /dev/poll и select. За мултиплексирането на връзки се използва библиотеката libuv, която е надстройка над libev в Unix системи и над IOCP в Windows. За създаване на пул от потоци се използва библиотеката 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 е скрит от разработчика и наподобява обработката на събития в уеб приложение, работещо в браузър.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster