Состоялся релиз Node.js 22.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 22.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 22.x будет осуществляться до 30 апреля 2027 года. Сопровождение прошлой LTS-ветки Node.js 20.x продлится до апреля 2026 года, а позапрошлой LTS-ветки 18.x до апреля 2025 года. Сопровождение промежуточной ветки Node.js 21.x будет прекращено 1 июня 2024 года...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61067
Это уже легаси. Deno же есть.
Deno - не нужен
Потому что нет совместимости с нодойBun интересный эксперимент
однако для прода Node.js будет стандартным решением ибо давно обкатано
Дено бай дизайн неюзабельная штука даже если его использовать самостоятельно. А не как совместимость.
Только нет ниодного реального человека который бы в реальности использовал дено вместо ноды.
Когда появляется новый язык/рантайм/whatever, я всегда проверяю одну вещь: позволяет ли этот язык работать с файлами, название которых не является валидной UTF-строкой. Так вот: Node.js -- позволяет, имя файла может быть буфером. Питон -- позволяет, имя файла может быть буфером. А вот дено -- сюрприз! -- нет. В дено имя файла -- это либо строка, либо URL. Это означает, что:Дено не дает тебе надежного способа прочитать список файлов в папке, если один из этих файлов имеет название, не являющееся валидной UTF-строкой. Другие языки и рантаймы -- позволяют.
Дено -- это детский рантайм, который и для одноразовых скриптов-то еле годится.
Ок, допустим новый язык позволяет работать с файлами, к-е на являются валидной UTF-строкой. Но больше этот ЯП ничего не умеет, только вот работать с такими файлами и всё... Норм язык?
Если этот язык планирует расширять остальную часть своей стд-либы -- да. А если аффтар не догадывается о существовании такого концепта, как OsString, то его стд-либа навсегда останется плюшевой.
> Но больше этот ЯП ничего не умеет, только вот работать с такими файлами и всё... Норм язык?Этот вопрос можно более глобально экстраполировать: в вин11 ввели рекламу в "Пуске", которую можно выключить -- нужно срочно брать норм дистрибутив, и натягивать функции, которых не хватает, зато без потенциальной рекламы, стать мастером настройки сети (но не порезать телеметрию).
А что значит "имя файла может быть буфером"?
Да черт его поймет что этот ноуджыэсник имеет ввиду
это значит широкие возможности, т.е. еще большее поле для уязвимостей
> А что значит "имя файла может быть буфером"?Привет, недавно в айти? Имя файла -- это бинарные данные. В си это массив char, в питоне это массив byte, а в GLib различают name и display name -- реальное имя файла и имя файла, показываемое пользователю в гуе, например "???.pdf (некорректная кодировка)". В плюшевых языках/рантаймах аффтары норовят ее сделать строкой или даже урлом. Это значит, что если ты задумаешь написать на таких языках файловый менеджер, то он тебе покажет, что такая-то папка пустая, хотя там можешь быть куча файлов с невалидной UTF-строкой в названии.
> Привет, недавно в айти?Привет. Нет, я давно в айти. А ты недавно? По чем щас курсы скиллбокса?
> Имя файла -- это бинарные данные
Все в компухтере - бинарные данные. И имя файла, и PNG, и MP4.
> задумаешь написать на таких языках файловый менеджер, то он тебе покажет, что такая-то папка пустая, хотя там можешь быть куча файлов с невалидной UTF-строкой в названии
Ты точно недаво в айти, если не знаешь как это обойти
> По чем щас курсы скиллбокса?Не знаю, узнавай у скиллбокса. Отпишись, как пройдешь!
> Все в компухтере - бинарные данные. И имя файла, и PNG, и MP4.
Ага, но с точки зрения плюшевых рантаймов (в том числе дено), имя файла -- это не просто бинарные данные, а бинарные данные, обязательно являющиеся валидной UTF16-последовательностью. То, что далеко не все файловые системы это форсируют, тебе не известно. То, что по I/O тебе могут прийти любые последовательности символов (а readdir -- это тоже I/O) -- тебе тоже не известно. Обязательно отпишись, рассказывают ли про это в скиллбоксе! Или можешь сам мне лично сказать, когда будешь пробивать мне товары на кассе в пятерочке.
Клован, у нас в Кипре нет пятерочек :) Но есть Alphamega, это примерно то же самое, но врядли ты там окажешься даже в качестве покупателя, тем более я там не работаю.> То, что по I/O тебе могут прийти любые последовательности символов (а readdir -- это тоже I/O) -- тебе тоже не известно
Ахахахаха. Уважаемый кассир пятерочки, я работаю в железячной компании и пишу кастомную ФС для ядра, а не надрачиваю на какие-то deno, python'ы и нодыжыэсы :)
> у нас в Кипре нет пятерочекЭто не беда, ты всегда можешь устроиться работать в аналогичную сеть магазинов. Годик-два поработаешь -- и накопишь на скиллбокс!
> пишу кастомную ФС для ядра
Пиши-пиши, это похвальное дело. Практика -- это один из лучших способов вкатиться в айти.
> не надрачиваю на какие-то deno, python'ы и нодыжыэсы
Ну не все сразу. Сегодня пишешь "кастомную ФС для ядра" на бейсике. А через годик глядишь и до паскаля доберешься. А уж к концу жизни обнаружишь, что оказывается далеко не во всех ФС имя файла обязано быть валидной UTF-16 строкой. К этому моменту я так полагаю ты уже будешь заведующим отдела молочной продукции в "Alphamega".
> что оказывается далеко не во всех ФС имя файла обязано быть валидной UTF-16 строкойЯ где-то и когда-то говорил, что обязано? Ты в этом своём неплюшевом языке не можешь чтоли вызвать syscall напрямую, минуя readdir и просто из файлового дескриптора прочитать байты похер в какой кодировке?
> Я где-то и когда-то говорил, что обязано?Ты или Аноним (22) задал наивный детский вопрос про то, что означает фраза "имя файла может быть буфером", вот я и посчитал нужным тебя ввести в курс дела, потому что постановка вопроса сразу выдала в тебе новичка в айти. Про сисколы свой вольный пересказ того, что тебе нагенерил чатжпт сюда лучше не присылай: со стороны это выглядит в лучшем случае глупо. Моя рекомендация -- просто возьми и честно изучи, что такое ФС, что такое файл, что такое имя файла и какие ФС имеют к нему какие требования.
> Ты или Аноним (22) задал наивный детский вопрос про то, что означает фраза "имя файла может быть буфером", вот я и посчитал нужным тебяда это не я был :) Нас просто легион
> что тебе нагенерил чатжпт сюда лучше не присылайИ, кстати, не пользуюсь. Наверно надо уже начинать, но еще ни разу не юзал
И да, мне наверно не стоило отвечать на твое "недавно в айти?", если это было не мне :) Ну да ладно, что сделано, то сделано.Но все же вопрос открытй: ты в своем неплюшевом языке/рантайме не можешь что ли не юзать встроенные средства, а просто открыть директорию через open/opendir, получить fd и просто прочитать оттуда байты в любой кодировке? И затем сам решаешь как тебе это интерпретировать?
Дружище, я задал тебе нормальный вопрос. Мне правда стало интересно, что ты имеешь ввиду. Но ты сразу перешел на личности, с изрядной долей снобизма. Если бы ты написал, имя файла можно передать в виде массива байт вопросов бы не было. Кто ж знал, что в это вашей ноде это называется Buffer.
Да какой он тебе дружище, Друг? :) Какой-то эникейщик выучил немного нодыжс, теперь пыжится типа специалист :)
Т.е. вместо того, чтобы донести на ИТ-террориста, ты играешь в его игру по его правилам?
>я всегда проверяю одну вещь: позволяет ли этот язык работать с файлами, название которых не является валидной UTF-строкойАнекдот про звонок на спичечную фабрику
Сишный ls покажет тебе, что в папке куча многогигабайтных файлов. А теперь войди в repl своего плюшевого рантайма и сделай readdir той же самой папки. Плюшевый язык/рантайм, форсирующий строки в названиях файлов, скажет тебе, что папка пустая. Да такую ерунду, не умеющую толком в I/O, даже в хелловорлдах стремно использовать, не то, что в одноразовых скриптах.
Чел, да ты реально крутой. Плюшевый язык/рантайм форсирует строки в названиях, а ты туда случайных байтов насыпал! А? Каково? Ух хитрец, ух язва! Сам читаешь, а другие-то и не знают как. Молодец!
А зачем вообще может понадобится работа с файлами, название которых это не валидная utf строка?
например чтобы переименовать
Можно просто сразу аккуратно работать и не давать подливы чтобы потом усираться с исправлениями, если ваши вкусы не специфичны конечно же..
Сбой устройства, как следствие сбой фс, как следствие частичная потеря данных файлов.Во времена переносных hdd один из таких упал сантиметров с десяти. Как итог: данные частично восстановил с помощью спецсофта. Многие файлы были побиты, не говоря уже про имена файлов (абракадабра отдыхает).
Плюс к этому не забываем про кривой софт.
Раньше программы падали если директория пользователя названа кириллицей, ибо про другие кодировки кроме ASCII не хотели знать. Сейчас падают если полный путь содержит невалидную UTF-строку.Дело в надёжности
> Deno же есть.Это где модули импортируются по урл из интернета?
Легаси это бандлы, скомпиленные вчера.
Нужно срочно бросить разработку новых функций и исправление багов, запускать npm update -g и прочие команды, править конфиги сборки, подгонять проект по собираемость и "неуязвимость", и чтобы еще мейнтейнеры 500 зависимых пакетов тоже успели сделать то же самое к этому моменту, причем, одновременно, иначе старое не соберётся с полуновыми зависимостями.
> дополнительно Microsoft развивает вариант Node.js
> с движком Chakra-Coreэто не та чакра, которую даже сам микрософт не использует в своём свежем эдже ?
Ты бы ещё про spidernode вспомни. Не надо я уже вспомнил.
Я так понимаю, это первый рантайм в породе с поддержкой wasmgc из коробки. Штош, докеру с их wasmEdge стоит пошевелиться.
соглашусь
> Для создания пула потоков (thread pool) задействована библиотека libeioПул потоков в libuv реализован без сторонних библиотек.