The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Опубликована платформа Node.js 23.0 с начальной поддержкой языка TypeScript

17.10.2024 10:50

Состоялся релиз 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 без типов). Вторая опция осуществляет преобразование в код на JavaScript некоторых элементов синтаксиса TypeScript, например, перечислений (enum) и пространств имён (namespace).
  • Включена по умолчанию возможность использования вызова "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 может быть использована как для серверного сопровождения работы 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-приложении, работающем в браузере.


  1. Главная ссылка к новости (https://nodejs.org/en/blog/rel...)
  2. OpenNews: Доступна платформа Deno 2.0, развиваемая автором Node.js
  3. OpenNews: В Node.js добавлена экспериментальная поддержка языка TypeScript
  4. OpenNews: Доступна JavaScript-платформа Node.js 22.0.0
  5. OpenNews: Атака на Node.js через манипуляции с прототипами объектов JavaScript
  6. OpenNews: В JavaScript-платформе Bun добавлена поддержка вызова кода на языке Си
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62066-node.js
Ключевые слова: node.js
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:08, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даже нода стала развиваться в правильном направлении после появления дено и других банов.
     
  • 1.3, нехочу (?), 12:19, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >платформы для выполнения сетевых приложений на языке JavaScript

    теперь уже не платформа для бэк разработки? что бы это вообще значило "выполнения сетевых приложений"?

     
     
  • 2.18, Аноним (18), 13:21, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>платформы для выполнения сетевых приложений на языке JavaScript
    > теперь уже не платформа для бэк разработки? что бы это вообще значило
    > "выполнения сетевых приложений"?

    Ну так для бэкэнда не берут, а для написания всяких клиентов, маскирующихся под браузеры - очень даже. Чем не сетевые приложения. Смешно, конечно.

     

  • 1.4, чатжпт (?), 12:31, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Не прошло и ста лет. В это же время разработчики массово сваливают с тайкпскрипта на ванильный яваскрипт
     
     
  • 2.5, Вася Пупкин (?), 12:42, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почему сваливают? что не так с ts?
     
     
  • 3.8, Аноним (8), 12:50, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ненужная прослойка
     
  • 3.39, Аноним (-), 15:18, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Типизация позволяет не допустить множества ошибок ещё на этапе разработки. Очень печально что некоторые люди не могут осилить TypeScript. На практике это месяцы экономии времени за год. Может JavaScript разработчики свои маленькие задачки быстрее выполняют за день, но совокупность задач за год у них явно меньше, потому что ошибка на ошибке и ошибкой погоняет. Всё зависит как считать - комитмент на спринт у них вроде больше, а по ценностям скрама разработчики TypeScript как правило выигрывают, так как на более долгие сроки у них комитмент выше. Именно из-за типизации. Более того слаженность команды выше также из-за типизации. Поддержка проще, точно по тем же причинам.
     
     
  • 4.58, нехочу (?), 17:34, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >На практике это месяцы экономии времени за год

    хотелось бы более точных данных, но понятно что нет пока такой возможности

     
     
  • 5.69, Аноним (-), 18:36, 17/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.72, Аноним (-), 18:40, 17/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.59, Аноним (59), 17:35, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Разработка свиcтопepделок - это уже смешно. И уж тем более, когда используют 100500 всяких промежуточных этапов.
     
  • 4.66, Ko (?), 17:56, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Есть и другие способы выявления ошибок кроме тотальной типизации. И для команды лучше потратить время более эффективно. Ошибок которые может предотвратить только ts очень мало. Каждый рас когда на проде выявляется ошибка за которую "стыдно" задаю себе вопрос, а помог бы ts ее выявлении - и да иногда бы помог, но это все из за того что поспешил или клал большой на тесты.  
    Выигрыш от скорости и гибкости который дает js в сто рас окупает себя. Я лучше быстрее доведу продукт до бета-тестирования и выявлю важные ошибки (и не буду блокать других участников команда) чем буду тратить время на описание типов (это как дорогу посыпать соломкой, а то вдруг упаду).

    Есть задачи где безопасность кода нужно довести до абсурда. Но стоит начать с более эффективных инструментов.

    Яб сказал что это вы не осилили js. А в решении задач недостаточно глубоко прорабатываете решение. Чтоб качественно писать на js нужно читать код который вы используете, а не доверять ide и типам.

     
     
  • 5.68, Аноним (-), 18:09, 17/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.42, Аноним (-), 15:22, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Главный косяк TS это политика - его разрабатывает Microsoft.
     
  • 2.16, Аноним (18), 13:19, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Не прошло и ста лет. В это же время разработчики массово сваливают
    > с тайкпскрипта на ванильный яваскрипт

    Да ну, не верю. Буквально в каждом проекте как чуть стагнация разработки начинается из-за слабого менеджмента, так сразу начинают "рефакторить" и "переписывать на тайпскрипт". Это у ребят как религия. Все проблемы проекта решаются переходом на тайпскрипт. Ну как переходом - тут главное процесс, начать переходить, определить правила - что на тс, что на жс. При мне эти процессы никогда не заканчивались.

     
     
  • 3.47, чатжпт (?), 15:40, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    весь интернет полон: why you should reconsider using TypeScript and shift back to pure JavaScript или Big projects are ditching TypeScript... why?
     
     
  • 4.50, пох. (?), 16:13, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А это для тех у кого процесс таки закончился, не смотря на все усилия. Теперь и им есть чем заняться и что написать в отчет.
     
  • 3.60, нехочу (?), 17:36, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Это у ребят как религия.

    согласен. тс религия. да и вообще модный стек это религия

     

  • 1.6, Аноним (6), 12:44, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Сначала изобрели язык без типов, а потом добавили в него типы. Что за прикол?
     
     
  • 2.7, Someone (??), 12:50, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Никто никуда ничего не добавлял.
    JavaScript как не имел типов, так и не имеет.
    TypeScript изначально был с типами.
     
     
  • 3.9, Аноним (8), 12:54, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    JavaScript имеет типы! Можешь прямо сейчас попробовать в консоли:

    if (typeof 'value' !== 'boolean') alert('boo!')

     
     
  • 4.10, Someone (??), 13:00, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это рантайм типы, которые есть в практически любом языке. Вопрос в статической типизации, которая работает до выполнения кода.
     
     
  • 5.29, Аноним324 (ok), 14:25, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем статическая типизация в языке с динамической?
     
     
  • 6.52, Аноним (52), 16:27, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сильно облегчает программирование. В IDE можно ткнуть точку и посмотреть чем можно дополнить. Также, валидатор сразу определяет ошибочные типы.
     
  • 4.40, Аноним (-), 15:20, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще они называются примитивы, если быть занудным.
     
  • 3.14, penetrator (?), 13:06, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

    However, with the addition of classes, the creation of hierarchies of objects and the inheritance of properties and their values are much more in line with other object-oriented languages such as Java. In this section, we will demonstrate how objects can be created from classes.

    то что оно все корявое поверх прототипов, так в JS/TS все корявое, если бы не массовое применение в браузерах померло бы давно

     
     
  • 4.20, Аноним (18), 13:26, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Корявым все становится, когда люди с квадратно-гнездовым мышлением приходят из своих плюсов и пытаются в жс накостылировать то, к чему привыкли.
     
     
  • 5.54, Аноним (54), 17:08, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это вы сейчас про типы, да?
     

  • 1.12, Аноним (12), 13:03, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Главный вопрос - они насмерть завирусованный npm оставили по умолчанию?
    Все так же, неизвестный производитель костыль-фреймворка может втихую подменить его на вредоносный код, который автоматически распространиться на все инсталляции использующие его?
     
     
  • 2.13, Someone (??), 13:06, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не бывать такому! Тысячи глаз не допустят!
     
  • 2.17, Аноним (17), 13:19, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем вы используете костыль-фреймворки у себя и при этом даже не лочите версии зависимостей?
    И главный вопрос: какое решение вы предлагаете взамен?

    Я не троллинга ради, мне действительно интересно послушать аргументы тех, кто выступает против NPM (и не только NPM, а вообще всех публичных репозиториев). Критику я слышу, а вот конструктивных предложений что-то ни от кого не поступает

     
     
  • 3.26, Аноним (26), 13:59, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > кто выступает против NPM (и не только NPM, а вообще всех публичных репозиториев).

    Я тут выступаю как капитан очевидность.

    Использовать то, что идет в репозиториях текущих дистрибутивов?

     
     
  • 4.33, Витюшка (?), 14:55, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Т.е. абсолютно тоже самое только запакованное в пакеты?

    Товарищ вообще хоть раз видел пакеты вживую?

    В их скриптах в 99% сейчас это скачивание tar.gz с версией с GitHub.

     
     
  • 5.63, Аноним (26), 17:48, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Т.е. абсолютно тоже самое только запакованное в пакеты?

    Которое не подменить.

    > Товарищ вообще хоть раз видел пакеты вживую?

    Шуткуешь?

    > В их скриптах в 99% сейчас это скачивание tar.gz с версией с GitHub.

    Что?

    Похоже просто ляпнуть что-нибудь решил.

     
  • 4.44, Аноним (44), 15:29, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А то, что не идёт - нинужно, да?
     
     
  • 5.64, Аноним (26), 17:50, 17/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.57, Ruslan (??), 17:22, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А что идёт в текущем дистрибутиве ноды, кроме самой ноды и пакетного менеджера?
     

  • 1.15, Аноним (18), 13:13, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Скриптовой язык с типами - это все неудобства типизации вместе с низкой производительностью скриптового языка. Контроль типов ущербный. Все как любят профнепригодные. Не представляю себе людей, которые _это_ предпочтут какому-нибудь голангу (мальчику уже 10 лет исполнилось, если чо).

     
     
  • 2.23, Вы забыли заполнить поле Name (?), 13:51, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Контроль типов ущербный

    Сейчас очередной гофер расскажет как надо сделать хорошую систему типов. Шаблоны уже начал использовать хоть?

     
  • 2.25, Вы забыли заполнить поле Name (?), 13:53, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > голангу (мальчику уже 10 лет исполнилось, если чо).

    Почему телеметрию добавляют в 10 лет? Это какой-то обряд?

     
     
  • 3.27, Аноним (6), 14:04, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я, конечно же, не любитель голынга с этими как их... горутинами, но телеметрию добавили вроде в конь-эпилятор, в сам бинарь она не пихается.
     
     
  • 4.31, Аноним (1), 14:34, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пока что. Тем более откуда ты знаешь конь не получает сигналы из центра вместе с отсылкой телеметрии?
     
  • 4.45, Аноним (45), 15:36, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >о телеметрию добавили вроде в конь-эпилятор

    И этого уже достаиочно, чтоб избегать.

     
  • 2.53, Аноним (-), 17:06, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > производительностью скриптового языка

    Скриптовые языки by design не предназначены для утилизации максимальной производительности. Для этого есть всякие Си, Rust и прочие Turbo Pascal. Если же говорить про Ноду, то в 99% случаев её использования, всё упирается в I/O.

     
     
  • 3.62, Аноним (52), 17:47, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну не пишут веб-сайты на всяких C, Rust. Почему-то все хотят простой язык, да ещё и такой, чтобы один программист мог и фронт и бак делать. И что-то мне подсказывает, что вариантов такого универсального языка раз, два и обчёлся. Даже если поискать всякую экзотику типа CoffeeScript.
     
     
  • 4.67, Аноним (8), 17:58, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Немного не так: все хотят ничего не делать. Максимум скопировать пару строчек из примера использования очередного фреймворка.
     

  • 1.32, Сижу на толчке (?), 14:54, 17/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Удалена поддержка 32-разрядных систем с ОС Windows.

    Впечатление будто это форсируют искусственно чтобы принуждать людей обновлять железо.

     
     
  • 2.43, Аноним (-), 15:26, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У них сроки поддержки старых ОС ограничена, но эта информация где-то публичная, где-то не публичная. И да, окончание поддержки это форсирование. Таковы правила порождены менеджментом с маркетологами.
     
  • 2.51, Аноним (-), 16:22, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можно подумать, что кто-то под 32-битной вендой занимается разработкой на nodejs.
    Было бы куда хуже, если 32-битный debian почит в Бозе.
    А так, в целом, обидно, досадно, но ладно.
     
     
  • 3.56, Аноним (-), 17:21, 17/10/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.55, Аноним (-), 17:13, 17/10/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.61, нехочу (?), 17:44, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    экспертизы по такой древности (32-разрядных) уже мало
     
  • 2.65, Аноним (52), 17:54, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да не будет никто выставлять сервер на Win32. Сам вопрос выставить что-то под виндой в инет - это странный вопрос.
     
     
  • 3.70, Аноним (1), 18:37, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нода это ещё и электрон.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру