The OpenNET Project / Index page

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

Доступна серверная JavaScript-платформа Node.js 20.0

19.04.2023 07:10

Состоялся релиз Node.js 20.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 20.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 20.x будет осуществляться до 30 апреля 2026 года. Сопровождение прошлой LTS-ветки Node.js 18.x продлится до апреля 2025 года, а позапрошлой LTS-ветки 16.x до сентября 2023 года. Сопровождение LTS-ветки 14.x будет прекращено 30 апреля, а промежуточной ветки Node.js 19.x - 1 июня.

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

  • Движок V8 обновлён до версии 11.3, применяемой в Chromium 113. Из изменений по сравнению с веткой Node.js 19, в которой использовался движок Chromium 107, отмечаются функции String.prototype.isWellFormed и toWellFormed, методы Array.prototype и TypedArray.prototype для работы с копией при изменении объектов Array и TypedArray, флаг "v" в RegExp, поддержка изменения размера ArrayBuffer и увеличения размера SharedArrayBuffer, хвостовая рекурсия (tail-call) в WebAssembly.
  • Предложен экспериментальный механизм Permission Model, позволяющий ограничить доступ к определённым ресурсам в процессе исполнения. Поддержка Permission Model включается через указание при запуске флага "--experimental-permission". В начальной реализации предложены опции для ограничения доступа на запись (--allow-fs-write) и чтение (--allow-fs-read) к определённым частям ФС, дочерним процессам (--allow-child-process), дополнениям (--no-addons) и потокам (--allow-worker). Например, чтобы разрешить запись в каталог /tmp и чтение файла /home/index.js можно указать:
    
        node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read=/home/index.js index.js
    

    Для проверки доступа предлагается использовать метод process.permission.has(), например, "process.permission.has('fs.write',"/tmp/test").

  • Обработчики внешних модулей ECMAScript (ESM), загружаемых через опцию "--experimental-loader", теперь выполняются в отдельном потоке, изолированном от основного потока, что исключает пересечение кода приложений и загружаемых ESM-модулей. По аналогии с браузерами метод import.meta.resolve() при вызове из приложения теперь выполняется в синхронном режиме. В одной из следующих веток Node.js поддержку загрузки ESM планируют перевести в разряд стабильных возможностей.
  • В число стабильный переведён модуль node:test (test_runner), предназначенный для создания и запуска тестов на языке JavaScript, возвращающих результат в формате TAP (Test Anything Protocol).
  • Сформирована отдельная команда разработчиков, отвечающая за оптимизацию производительности, которая при подготовке новой ветки провела работу по ускорению различных runtime-компонентов, включая разбор URL, fetch() и EventTarget. Например, накладные расходы при инициализации EventTarget снижены в два раза, значительно повышена производительность метода URL.canParse() и повышена эффективность работы таймеров. Кроме того, в состав включён выпуск высокопроизводительного парсера URL - Ada 2.0, написанного на языке C++.
  • Продолжено развитие экспериментальной возможности для поставки приложений в форме одного исполняемого файла (SEA, Single Executable Applications). Создание исполняемого файла теперь требует подстановки блоба, формируемого на основе файла конфигурации в формате JSON (вместо подстановки JavaScript-файла).
  • Улучшена совместимость API Web Crypto с реализациями от других проектов.
  • Добавлена официальная поддержка Windows на системах ARM64.
  • Продолжена реализация поддержки расширений WASI (WebAssembly System Interface) для создания обособленных WebAssembly-приложений. Убрана необходимость указания специального флага командной строки для включения поддержки WASI.

Платформа 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) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных.

  1. Главная ссылка к новости (https://nodejs.org/en/blog/ann...)
  2. OpenNews: Доступна серверная JavaScript-платформа Node.js 19.0
  3. OpenNews: Атака на Node.js через манипуляции с прототипами объектов JavaScript
  4. OpenNews: Автор Node.js представил защищённую JavaScript-платформу Deno 1.0
  5. OpenNews: Доступна серверная JavaScript-платформа Node.js 18.0
  6. OpenNews: В JavaScript-платформе Deno обеспечена совместимость с модулями NPM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58998-node.js
Ключевые слова: node.js
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (142) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Антифрактал (?), 11:42, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Сформирована отдельная команда разработчиков, отвечающая за оптимизацию производительности

    Неужели? А не будет отдельной команды по архитектуре, чтобы от этого отказывались все

     
     
  • 2.2, Вы забыли заполнить поле Name (?), 12:40, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    От чего отказались? Наоборот околофронтенд рад тому, что можно писать на жс веб сервера и консольные приложения. Или ты будешь формировать для них html?
     

  • 1.3, Аноним (3), 12:53, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Предложен экспериментальный механизм Permission Model

    Лучше линуксовых неймспейсов ничего пока не придумали.

     
     
  • 2.17, Аноним (17), 13:23, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это изоляция на уровне процессов, а когда нужно внутри программы что-то ограничить, то как тебе неймспейсы помогут?
     
     
  • 3.25, Аноним (3), 13:37, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    изоляция "внутри программы" - это миф. Во-первых это миф требования: нет никакой нужды ограничивать что-то "внутри программы" (если есть - приведи пример, но такой, где изоляция процесса принципиально не подходит). Во-вторых, это миф реализации: я не стал бы доверять вопросы безопасности какому-то там Joyent (или кто там владеет нодой), когда уже есть авторитетный линукс с проявившими свою состоятельность неймспейсами.
     
     
  • 4.100, Вы забыли заполнить поле Name (?), 16:09, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > изоляция "внутри программы" - это миф. Во-первых это миф требования: нет никакой
    > нужды ограничивать что-то "внутри программы" (если есть - приведи пример, но
    > такой, где изоляция процесса принципиально не подходит).

    Ну тогда нужно перестать пользоваться ff или хромом, в котором есть своя изоляция.

    > Во-вторых, это миф реализации:
    > я не стал бы доверять вопросы безопасности какому-то там Joyent (или
    > кто там владеет нодой), когда уже есть авторитетный линукс с проявившими
    > свою состоятельность неймспейсами.

    Нода развивается под OpenJS Foundation, которая входит в Linux Foundation.

     
     
  • 5.107, Аноним (3), 16:56, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > нужно перестать пользоваться ff или хромом, в котором есть своя изоляция

    Ты забыл упомянуть, что там в том числе используется изоляция средствами операционки.

    > развивается под OpenJS Foundation, которая входит в Linux Foundation

    Да хоть бы и так: разделением-и-властвованием должна заниматься операционная система. Любая попытка изобрести плюшевую изоляцию в юзерспейсе примитивными if (path.startsWith('/home/user')) return Policy.RAZRESHAEM -- обречена на провал.

     
     
  • 6.115, Вы забыли заполнить поле Name (?), 19:50, 19/04/2023 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 7.156, Аноним (3), 10:24, 20/04/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 4.164, Аноним (164), 17:59, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Во-первых это миф требования: нет никакой нужды ограничивать что-то "внутри программы" (если есть - приведи пример, но такой, где изоляция процесса принципиально не подходит)

    Использование любой сторонней библиотеки. Библиотека предназначенная для криптографии не должна иметь вохможности выйти в сеть или в читать файлы на диске. Как и библиотека ханимающаяся компрессией. А разносить каждую утилитарную бибилотеку по процессам - это верх идиотизма.

     
  • 2.29, Вы забыли заполнить поле Name (?), 13:58, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Лучше линуксовых неймспейсов ничего пока не придумали.

    Сабж не только под линуксом работает.

     
     
  • 3.59, Самый Лучший Гусь (?), 15:22, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А нигде больше ноду и не нужно запускать, это же чисто линуксовая приколюха там сайтики пилить
     
     
  • 4.61, Вы забыли заполнить поле Name (?), 15:24, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    electron ее использует
     
     
  • 5.109, Аноним (3), 17:02, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так ты конечный пользователь либо полностью доверяешь электроновскому приложению, либо нет. В последнем случае ты изолируешь целиком всю приложуху, то есть изоляция именно на уровне всей иерархии процессов и подпроцессов. Не знаю, есть ли в вантузе аналог неймспейсов, но если есть - ты воспользуешься именно им, а не нодовской плюшевой фигней.
     
  • 2.162, Аноним (162), 14:38, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тут скорее больше как аддоны в браузере, у каждого свои права, которые явно декларируются. Изоляцию средствами ОС туда не применить. Стоит ли из-за этого убрать права для расширений? Нет конечно!
     
     
  • 3.165, Вы забыли заполнить поле Name (?), 18:27, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Еще как пример можно привести Content Security Policy в браузерах.
     

  • 1.4, Аноним (4), 13:01, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    C#, java шлют телеметрию на каждый пук, rust пропртетарный вендорлок, js жручее память не нужно. Вот и что остаётся, кроме старой доброй сишечки? Она универсальна, быстра, свободна. Но есть одно но, которое перечёркивает ВСЕ плюсы: си - лютое ре-ше-то!
     
     
  • 2.6, ПерлухаБратуха (?), 13:07, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > C#, java шлют телеметрию на каждый пук

    Пруфы можно (относительно телеметрии в openjdk)?

     
     
  • 3.8, Аноним (8), 13:11, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Экспертам опеннета принято верить на слово.
     
     
  • 4.125, Аноним (125), 22:20, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Особенно анонимным.
     
  • 3.57, Аноним (57), 15:20, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    То было в проприетарном Sun JDK, который поставлялся только в виде блоба.
     
  • 2.9, АнонимАнонимовичАнонимов (?), 13:13, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что Вы скажите про Python?
     
     
  • 3.18, Аноним (17), 13:25, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Говяная система импортов основанная на какой-то псевдофайлововй системе,
    невозможность нормальной рефлксии, отсутствие JIT и ужасный синтаксис для
    лямбд. А в целом почти JavaScript, а еще event-loop в Python зачем-то
    сделали на Python вместо того что бы взять тот же libuy
     
     
  • 4.23, Аноним (23), 13:31, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чёт вкусовщина. И если проблема в этом, то почему замена штатного на uvloop делает только хуже? В чём суть претензии? Хотя "хуже" это преувеличение, едва ли можно заметно лучше, чем сейчас. Скорее, "проблемнее". Реальная проблема как мне видится в сложности профилирования и отладки асинхронного кода, это какая-то содомия чистой воды.
     
     
  • 5.35, Вы забыли заполнить поле Name (?), 14:03, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Реальная проблема как мне видится в сложности профилирования и отладки асинхронного кода, это какая-то содомия чистой воды.

    Проблема, что код надо переписывать в отличие от гевента, который патчит все под капотом. С другой стороны «явное лучше неявного», но раз добавив async, далее тоже нужно везде все делать асинхронным и искать обертки для существующих либ, хотя уже многие поддерживают asyncio.

     
     
  • 6.152, BrainFucker (ok), 05:26, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > далее тоже нужно везде все делать асинхронным и искать обертки для существующих либ

    asgiref.async_to_sync, asgiref.sync_to_async

     
  • 4.43, th3m3 (ok), 14:20, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    JIT в Python скоро запилят.
     
     
  • 5.157, Бывалый смузихлёб (?), 13:38, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    до сих пор не запилили что ли !?
    вроде даже упоминается периодически что-то джитоподобное под пихон
     
     
  • 6.163, th3m3 (ok), 14:39, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > до сих пор не запилили что ли !?

    Есть инструменты, но как отдельные проекты, не в официальной поставке.


     
  • 4.99, Вы забыли заполнить поле Name (?), 16:05, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Говяная система импортов основанная на какой-то псевдофайлововй системе

    Вроде модули повторяют структуру файлов в фс.

     
  • 3.151, Аноним (151), 04:03, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Какой-бы JIT ни добавили в скриптовые языки, они всегда будут медленнее компилируемых
     
  • 2.10, Аноним (23), 13:14, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тем временем у электрона уже лучшая производительность и лучшая интеграция с платформой, чем у жабы. Основная проблема си это тонны бойлерплейта и затратность написания кода, других я не вижу. От факапов современные интсрументы защищают очень хорошо. С плюсами посложнее, избавиться от утечек, чтобы тот же валгринд не ныл, похоже, невозможно.
     
     
  • 3.37, Вы забыли заполнить поле Name (?), 14:06, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > чтобы тот же валгринд не ныл, похоже, невозможно

    https://wiki.wxwidgets.org/Parse_valgrind_suppressions.sh

     
  • 3.126, Аноним (125), 22:24, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > От факапов современные интсрументы защищают очень хорошо

    Разработчики андроида с тобой не согласны

     
  • 2.11, annonn (?), 13:16, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    о..., чувак ну тебя и плющит

    я понимаю пруфов про шарп и джабу думаю мы не дождемся,
    но где ты увидел проприетарный вендорлок в расте?

    никто тебе не запрещает форкнуть его придумать новое название и логотип, лицензии это все позволяют
    тут даже на форуме обсуждали
    https://internals.rust-lang.org/t/forking-rust/7874

     
     
  • 3.110, billyillsellyoumycorrossion3 (?), 17:31, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > проприетарный вендорлок в расте

    https://foundation.rust-lang.org/members/

    никогда это и ни было секретом

     
     
  • 4.127, Аноним (125), 22:32, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    почти в любом мало-мальском (более одного разработчика), но серьезном, проекте обычно участвуют и IT-гиганты, в виде вот таких вот спонсоров или нагружая своих разработчиков. Даже стандарт С++ тебе пишут не исключительно коммунисты Столлманы, а куча парней с майкрософта, гугла, айбиэи и т.п., а не только профессора с универов.
     
     
  • 5.158, Бывалый смузихлёб (?), 13:41, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    потом правда оказывается что они и развитием продукта управляют в нужном для себя направлении
     
  • 3.111, billyillsellyoumycorrossion3 (?), 17:33, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > никто тебе не запрещает форкнуть

    андроед тоже был типа свободный. но твой работодатель дядя билл скосил много бумажек на шантаже оем-щиков.

     
  • 2.13, Аноним (13), 13:19, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ziglang
     
  • 2.14, Gemorroj (ok), 13:20, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    php как был эталоном, так и остается
     
     
  • 3.19, Аноним (17), 13:26, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот бы еще его развили до уровня написания стандалон приложений,
    то действительно цены бы не было...
     
  • 3.117, Аноним (117), 20:31, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Был когда-то. Сейчас его превратили в нечто псевдо-энтерпрайзное непонятно что.
     
  • 2.16, Аноним (16), 13:22, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если писать код в стиле Си-макак, то может и будет жрать, а у нормальных программистов js потребляет вполне умерено для JIT языка.
     
     
  • 3.21, Аноним (17), 13:27, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так а как вы отменяете отлетевшие промисы по таймауту скажем?
     
     
  • 4.167, Аноним (167), 05:49, 24/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если имеем дело с сетью (fetch) или другим IO, то есть AbortController - вызываем и нижестоящая операция прерывается с исключением AbortError (по-умолчанию).

    Для остальных промисов появился планировщик (чтобы каждый раз не пилить велосипед с setTimeout/clearTimeout)
    '''
    import { scheduler } from 'node:timers/promises'

    // ...

    await Promise.race([
      promiseChain,  scheduler.wait(5000).then(Promise.reject)
    ])
    '''

    Конечно настоящий код будет немного подробнее, чтобы отлаживать было проше

     
  • 2.45, Аноним (45), 14:49, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ничего Си — Топ.
     
  • 2.50, жявамэн (ok), 14:56, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >java шлют телеметрию на каждый пук

    пруфы тащи

     
  • 2.113, penetrator (?), 18:05, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    не C#, а .NET Core, пропиши OPTOUT 1 в переменную, найдешь в инете

    но справедливости ради, мелкософт не пропустил патч на переделку на OPTIN

     
  • 2.148, Аноним (148), 02:16, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ни одного пакета не видел от OpenJDK в Wireshark, который был шёл не по тем IP, которые я ожидал увидеть. В логах длиной в несколько суток в том числе.
     
  • 2.153, Аноним (153), 05:35, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>Вот и что остаётся, кроме старой доброй сишечки?

    C++, Haskell, O'Caml, StandardML, Raku

     

     ....большая нить свёрнута, показать (34)

  • 1.12, Аноним (12), 13:18, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Перешел с этого на bun.sh, доволен как слон.
     
     
  • 2.28, Аноним (28), 13:57, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Bun вроде какой 0.0.1, суперэкспериментальный? npm поддерживает?
     
  • 2.46, Аноним (45), 14:50, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Установка curl -fsSL https://bun.sh/install | bash всегда выдаёт шитопродукт.
     
     
  • 3.121, Аноним (121), 21:41, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Пока лучше ничего не пртдумали

    Куколды в интернете говорят cat less сделать лучше перед исполнением, что в целом не сложно и вполне ок.

     
  • 3.123, Аноним (123), 22:05, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Шитопродукт это когда $ curl ...install.sh | sudo bash
     
     
  • 4.133, Вы забыли заполнить поле Name (?), 23:01, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Шитопродукт это когда $ curl ...install.sh | sudo bash

    Как бы системные файлы можно восстановить, а вот хомяк...

     

  • 1.15, Брат Анон (ok), 13:20, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > Кроме того, в состав включён выпуск высокопроизводительного парсера URL -
    > Ada 2.0, написанного на языке C++.

    Так тонко, что аж жир течёт с сала)))

     
  • 1.24, Аноним (24), 13:35, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Node.js

    cтеклянные бусы для псеводайти

     
     
  • 2.27, Аноним (16), 13:40, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ловите эксперта!
     
  • 2.30, FF (?), 13:58, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для владельцев датацентров даже 2% экономии электроэнергии существенно, а про минус 200% производительности что-то зеленые молчат, шизoфазия
     
  • 2.39, Вы забыли заполнить поле Name (?), 14:09, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ты просто завидуешь домохозяйкам, которые обгоняют по производительности твой самописный сервер на сишечке.
     
     
  • 3.60, FF (?), 15:23, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    nginx?
     
     
  • 4.62, Вы забыли заполнить поле Name (?), 15:25, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Из nginx ходишь в бд и формируешь ответ? Пишешь логику на lua или ng?
     
     
  • 5.67, FF (?), 15:29, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а в твоей извилине сервер только такой бывает?
     
     
  • 6.80, Вы забыли заполнить поле Name (?), 15:37, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > а в твоей извилине сервер только такой бывает?

    Зачем тогда ты привел nginx?

     
  • 5.69, FF (?), 15:31, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    я пишу на Го, и 1 сервер заменит 10 серверов сабжа.
     
     
  • 6.82, Вы забыли заполнить поле Name (?), 15:38, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну молодец. Но ты же не формируешь данные для фронта хтмл и прочее, а максимум апи отдаешь. Ну вот пусть они на ноде и формируют все дальше сами.
     
     
  • 7.86, FF (?), 15:43, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    всмысле на ноде? нода это бэкенд! на фронте может быть тонкое представление этих данных. но увы, приходится собирать вебпаком через всё это дело.
     
     
  • 8.96, Вы забыли заполнить поле Name (?), 15:57, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну сейчас модно, чтобы фронтендеры сами писали фронтенд-бэкенд сходили в разные... текст свёрнут, показать
     
  • 4.166, ван (??), 21:45, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    njs ван лав
     

  • 1.32, FF (?), 14:00, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Интерпретируемый язык для высоконагруженных систем это самое худшее, что случалось с айти.
     
     
  • 2.40, Вы забыли заполнить поле Name (?), 14:11, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    АйТи управляют у кого есть деньги, а им нужен результат, а не идеальный код.
     
     
  • 3.51, FF (?), 15:12, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Охохо. А они как раз умеют считать деньги, и дело не в идеальном коде, а в неправильном выборе инструмента.
     
     
  • 4.63, Вы забыли заполнить поле Name (?), 15:27, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну скажи это github, instagram и прочим конторам с софтом на интерпретируемых языках.
     
     
  • 5.66, FF (?), 15:29, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    у них бэкенд на ноде?
     
     
  • 6.75, Вы забыли заполнить поле Name (?), 15:34, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > у них бэкенд на ноде?

    Тебе помочь перечитать твой комментарий? Давай помогу

    > Интерпретируемый язык для высоконагруженных систем это самое худшее, что случалось с айти.

    Где ты ноду там увидел?

     
     
  • 7.84, FF (?), 15:42, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    как ни крути, это все тормозной шлак, хоть и джанго.
     
     
  • 8.87, Вы забыли заполнить поле Name (?), 15:44, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну про то и речь что тормозной, но рыночек порешал ... текст свёрнут, показать
     
  • 3.55, FF (?), 15:18, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    почему тогда не на баш-портянках, не на батниках, павершелл скриптах? это же то же самое!
     
     
  • 4.64, Вы забыли заполнить поле Name (?), 15:27, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > это же то же самое!

    Если попишешь много на баше, то поймешь, что нет.

     
     
  • 5.74, FF (?), 15:33, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я не понимаю как можно писать на языке, который на каждом ходу выстреливает в ногу, потому что он может исполнить любую чушь
     
     
  • 6.83, Вы забыли заполнить поле Name (?), 15:40, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Я не понимаю как можно писать на языке, который на каждом ходу выстреливает в ногу, потому что он может исполнить любую чушь

    Ну открой утекшие исходники гитхаба и посмотри. Или просто открой люборе рельсовое или питонячее приложение. А для ноды есть ts, если хочется типов.

     
  • 6.85, Вы забыли заполнить поле Name (?), 15:43, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > потому что он может исполнить любую чушь

    Слушай в гошке можно себе точно также ножки отстрелить. Банально постоянное if err != nil или забытый defer или нетипобезопасные касты от interface.

     
  • 3.58, FF (?), 15:21, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    почему эппл пишет на Swift?
     
     
  • 4.65, Вы забыли заполнить поле Name (?), 15:28, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Яблоко пишет на свифте в основном приложухи, а не высоконагруженный сереверный софт.
     
     
  • 5.76, FF (?), 15:34, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    а в бэкенде электрона не нода?
     
  • 4.114, Илья (??), 19:00, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что нет другого способа приручить objectivec
     

  • 1.33, Аноним (33), 14:01, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я правильно понимаю она не реал-тайм?
    А то был мальчик один, который на ноде-джи-эс пытался внедрить систему управления ГазоПерекачивающимиАгрегатами в Газпроме. Мальчик был проплаченый потому и внедрил. Пришлось уехать от станции на 400 км.
     
     
  • 2.36, FF (?), 14:03, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да, сама асинхронность на одних обещаниях (promises)
     
  • 2.38, FF (?), 14:06, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    точно такой же мальчик пытался разработать конфигуратор для RISC-V микроконтроллера MIK32. Сначала пытался на Vue, потом передумал и решил поиграть с React. По итогу традиционно для наколенной экспериментальной вебни проект заброшен, как и выпуск МК.
     
     
  • 3.47, Аноним (47), 14:52, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Мальчик все правильно сделала риск 5 ненужен.
     
     
  • 4.71, Аноним (57), 15:31, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А Эльбрус насколько нужен за пределами Ресурсной?
     
     
  • 5.168, _kp (ok), 17:06, 24/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Он нигде не нужен. Ну, не получилось, с кем не бывает. Просто вместо признания провала, и переделки, важно раздувают щёки.
     
  • 2.108, Anonnn (?), 17:00, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну если мальчик делал HMI, отчеты и графики на Js то никакой проблемы не вижу, а АСУТП обычно через ПЛК управляются, вот там реалтайм
     
  • 2.159, Бывалый смузихлёб (?), 13:52, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Учитывая, что речь о работе с сетями, то какой там вообще может быть реалтайм ?

    Реальное время - оно или на плис или на мк, с соответствующей ОСью в рамках которой вертится прошивка и всякие пользовательские интерфейсы, графики да хттп/хттпс серверы этого вообще не касаются по многим причинам

    А как серверная часть для интерфейса управления или инфопанели - вполне неплохо может быть

     

  • 1.34, FF (?), 14:02, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Почему у меня сишные, гошные и прочие Qt проекты компилятся 3-5 секунд, а вебпак 30-50 секунд?
     
     
  • 2.41, Аноним (16), 14:15, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вебпак компилируется, серьезно? Вот это открытия на оппенете!
     
     
  • 3.52, FF (?), 15:14, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    зануда? вебпак собирает из помoйки node_molules 20К файлов в один минимизированный бандл.
     
     
  • 4.73, Вы забыли заполнить поле Name (?), 15:33, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > в один минимизированный бандл

    Необязательно в один и необязательно минимизированный.

     
     
  • 5.77, FF (?), 15:35, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    в демагогию я тоже умею, что не отменяет того, что он отрабатывает в 10 раз дольше
     
     
  • 6.91, Вы забыли заполнить поле Name (?), 15:47, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > не отменяет того, что он отрабатывает в 10 раз дольше

    Дык я написал ниже почему это происходит. Ты либо миришься с этим и не пикаешь, либо берешь https://esbuild.github.io/ или что-то другое.

     
     
  • 7.139, FF (?), 00:20, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > It's written in Go and compiles to native code.

    Вебпак тут как пример эффективности софта, зачем, если можно в 10 раз быстрее и даже не на сложных низкоуровневых Сях с крестами?

     
  • 5.78, FF (?), 15:36, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    а настроить его конфиг это тот еще квест, особенно когда с мажорными обновами все по-другому бывает
     
     
  • 6.92, Вы забыли заполнить поле Name (?), 15:48, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > а настроить его конфиг это тот еще квест, особенно когда с мажорными обновами все по-другому бывает

    А CMake или meson легче? Ой, не обманывай.

     
  • 2.42, Вы забыли заполнить поле Name (?), 14:16, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вебпак вроде промежуточные результаты преобразований  в памяти хранит, а это огромные строки и все это нужно делать каждый раз при запуске. В инкрементальном режиме все сильно быстрее. Уже есть куча других сборщиков, которые в на порядок быстрее, в том числе написанные на го и расте. Но если сделать нормальный кэш на диске, то и вебпак бы нормально работал.
     
     
  • 3.54, FF (?), 15:16, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    какие еще костыли предложите? протез для мозга же обсуждаем
     
     
  • 4.68, Вы забыли заполнить поле Name (?), 15:29, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это не костыли, а оптимизация. Удаляй тогда все объектны файлы после компиляции, это же "протез".
     
     
  • 5.79, FF (?), 15:36, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    с объектными файлами компилится не 3-5, а 1-2 секунды.
     
     
  • 6.94, Вы забыли заполнить поле Name (?), 15:51, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Еще раз: промежутчные артефакты для мейка и подобных систем сборки - это по факту кэш. В вебпаке ничего этого нет, он все делает в памяти (например, читает файл, отдает его ts, потом конкатит). Поэтому все ппц медленно. Плюс это все на js написано, что тоже не добавляет скорости. Но если его запустить в инкрементальном режиме, то он будет работать намного быстрее, хотя для этого и надо держать запущенным процесс.
     
     
  • 7.140, FF (?), 00:23, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    да, я знаю, он за 3 секунды компилит в инкрементальном, но иногда бывает косячит, нужно полностью перезапускать. Еще раз: вебпак это пример суперпроизводительного софта на JS, и это даже не студенческая разработка.
     
  • 2.49, Аноним (47), 14:52, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что вебпак не компилятор.
     
     
  • 3.53, FF (?), 15:15, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    правильно, он костыль, собирающий кучу scss, js, ts костылей в один нечитабельный мега-костыль
     
     
  • 4.70, Вы забыли заполнить поле Name (?), 15:31, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Компилятор по определению собирает кучу исходных файлов в один файл (почти всегда нечитабельный).
     
     
  • 5.81, FF (?), 15:38, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    напиши это выше в пост 2.41
     
  • 5.101, Аноним (47), 16:19, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    make это у тебя тоже компилятор? node.js кстати не всегда в один файл все собирает и ногад он создаёт больше файлов чем было исходных. Так что бред не пиши больше.
     
     
  • 6.105, Вы забыли заполнить поле Name (?), 16:22, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > make это у тебя тоже компилятор?

    make можно использовать для сборки как и вебпак.

    > node.js кстати не всегда в один
    > файл все собирает и ногад он создаёт больше файлов чем было
    > исходных. Так что бред не пиши больше.

    Ты потерял нить обсуждения https://www.opennet.ru/openforum/vsluhforumID3/130257.html#73 и просто стригерился. Не делай так больше.

     
  • 2.89, Аноно (?), 15:45, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Webpack уходящая натура, на подходе Turbopack и ужн есть отличный Vite...
     
     
  • 3.102, Аноним (47), 16:19, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кто на gulp до сих пор сидит наверняка, это не точно.
     
     
  • 4.160, Бывалый смузихлёб (?), 13:57, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    там где жс немного, смысла в вебпаке и нет. А галп как был так и будет
     

  • 1.48, Аноним (48), 14:52, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных.

    Ну что за дурацкий пример? Сейчас все нормальные люди используют async/await, чтобы не ломать голову с десятками вложенных функций и не огребать проблем с синхронизацией.

     
     
  • 2.56, FF (?), 15:20, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А как нормальные люди это всё добро отлаживают?
     
     
  • 3.72, Вы забыли заполнить поле Name (?), 15:32, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как любой другой код с кооперативной многозадачностью.
     
     
  • 4.88, FF (?), 15:45, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    console.log()?
     
     
  • 5.95, Вы забыли заполнить поле Name (?), 15:53, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты в гошке c fmt отлаживаешь?
     
     
  • 6.103, Аноним (45), 16:20, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, а какие ещё есть варианты?
     
  • 6.141, FF (?), 00:25, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    у меня есть пошаговая отладка, точки останова, просмотр значений, и все это в IDE
     
     
  • 7.143, Вы забыли заполнить поле Name (?), 00:39, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > у меня есть пошаговая отладка, точки останова, просмотр значений, и все это
    > в IDE

    В ноде тоже самое (в IDE или из консоли)

     
  • 7.146, Аноним (146), 01:29, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну поставь рядом со своим goland webstorm, и там даже все кнопочки будут такие же.
     
  • 3.98, anonymmm (?), 16:05, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >А как нормальные люди это всё добро отлаживают?

    ты ещё спроси как нейросети после обучения отлаживают))))

     
     
  • 4.142, FF (?), 00:26, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    оно примерно так и работает, каждый запуск радномная асинхронность
     
  • 3.145, Аноним (146), 01:27, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В отладчике. Async/await давно уже часть языка. Точно так же, как и во всех других языках с аналогичными конструкциями (Swift, C# etc).

    Да и даже если транспайлить в какую-нибудь дичь типа es5, в сгенерированый код заглядывать совершенно необязательно, любой вменяемый отладчик понимает sourcemaps, что в принципе примерно то же, что нестрипнутый бинарь.

     
  • 2.97, Вы забыли заполнить поле Name (?), 16:00, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Ну что за дурацкий пример?

    Ты не поверишь: это копипастится из новости в новость (можешь проверить) и под каждой есть подобный комментарий.

     
     
  • 3.104, Аноним (45), 16:21, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нода не для средних умов.
     
     
  • 4.106, Вы забыли заполнить поле Name (?), 16:29, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нода не для средних умов.

    Для передних (фронтенд).

     
     
  • 5.112, artptr (?), 18:04, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нода как раз для задних (бекенд)
     
     
  • 6.116, Вы забыли заполнить поле Name (?), 19:53, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Электрон с тобой не согласен
     
     
  • 7.155, Аноним (47), 10:23, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы все в этом треде все гонит потому что и передние и задние умы укладывается в понятие не средние.
     
  • 2.161, Бывалый смузихлёб (?), 14:03, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    нормальные люди промисы используют, работая с асинхронщиной как с асинхронщиной, попутно отлавливая ошибки кетчем
    а не пытаются превратить её в подобие синхронного кода

    В целом же, упомянутый пример является базовым и универсальным
    Ничто не мешает вызов чего-то с колбэком превратить в промис одной строкой кода( "обработка результата" из примера может оказаться вызовом резолва/режекта в зависимости от результата )  и работать с этим или посредством зен/кетч или асинк/авэйт

     

  • 1.128, zog (??), 22:43, 19/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Движок V8 обновлён до версии 11.3, применяемой в Chromium 113.

    Есть ли возможность использовать движок от Firefox?

     
     
  • 2.130, Вы забыли заполнить поле Name (?), 22:56, 19/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Движок V8 обновлён до версии 11.3, применяемой в Chromium 113.
    > Есть ли возможность использовать движок от Firefox?

    Был такой проект https://github.com/mozilla/spidernode но заброшен

     
     
  • 3.154, Аноним (47), 10:21, 20/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    С таким названием у него в РФ не было шансов.
     

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



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

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